contract ERC20Mintable is ERC20 {
    
    address private _minter;
    
    modifier onlyMinter() {
        require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minter == account;
    }
    
    constructor (address minter) public {
        _minter = minter;
    }
    
    /**
     * @dev Function to mint tokens
     * @param to The address that will receive the minted tokens.
     * @param value The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address to, uint256 value) public onlyMinter returns (bool) {
        _mint(to, value);
        return true;
    }
}
/**
 * @title ERC20Mintable
 * @dev ERC20 minting logic.
 */
function mint(address to, uint256 value) public onlyMinter returns (bool) {
    _mint(to, value);
    return true;
}

/**
 * @dev Function to mint tokens
 * @param to The address that will receive the minted tokens.
 * @param value The amount of tokens to mint.
 * @return A boolean that indicates if the operation was successful.
 */