contract MintableERC20 is ERC20Mintable, Ownable {

    constructor (
        string memory name,
        string memory symbol,
        uint8 decimals,
        uint256 initialBalance,
        uint256 chainId
    )
    ERC20(name, symbol, chainId)
    {
        _setupDecimals(decimals);
        _mint(_msgSender(), initialBalance);
    }

    /**
     * @dev Function to mint tokens.
     *
     * NOTE: restricting access to owner only. See {ERC20Mintable-mint}.
     *
     * @param account The address that will receive the minted tokens
     * @param amount The amount of tokens to mint
     */
    function _mint(address account, uint256 amount) internal override onlyOwner {
        super._mint(account, amount);
    }

    /**
     * @dev Function to stop minting new tokens.
     *
     * NOTE: restricting access to owner only. See {ERC20Mintable-finishMinting}.
     */
    function _finishMinting() internal override onlyOwner {
        super._finishMinting();
    }
}
function _mint(address account, uint256 amount) internal override onlyOwner {
    super._mint(account, amount);
}

/**
 * @dev Function to mint tokens.
 *
 * NOTE: restricting access to owner only. See {ERC20Mintable-mint}.
 *
 * @param account The address that will receive the minted tokens
 * @param amount The amount of tokens to mint
 */