UNPKG

@levxdao/airdrop

Version:

[![License: WTFPL](http://www.wtfpl.net/wp-content/uploads/2012/12/wtfpl-badge-3.png)](http://www.wtfpl.net/)

951 lines (950 loc) 122 kB
{ "id": "9e676cbfa44eb8286b3a7389b24fd75f", "_format": "hh-sol-build-info-1", "solcVersion": "0.8.3", "solcLongVersion": "0.8.3+commit.8d00100c", "input": { "language": "Solidity", "sources": { "contracts/uniswapv2/libraries/TransferHelper.sol": { "content": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity >=0.6.0;\n\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\nlibrary TransferHelper {\n function safeApprove(address token, address to, uint value) internal {\n // bytes4(keccak256(bytes('approve(address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\n }\n\n function safeTransfer(address token, address to, uint value) internal {\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\n }\n\n function safeTransferFrom(address token, address from, address to, uint value) internal {\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\n }\n\n function safeTransferETH(address to, uint value) internal {\n (bool success,) = to.call{value:value}(new bytes(0));\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\n }\n}\n" } }, "settings": { "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "abi", "evm.bytecode", "evm.deployedBytecode", "evm.methodIdentifiers", "metadata", "devdoc", "userdoc", "storageLayout", "evm.gasEstimates" ], "": [ "ast" ] } }, "metadata": { "useLiteralContent": true } } }, "output": { "contracts": { "contracts/uniswapv2/libraries/TransferHelper.sol": { "TransferHelper": { "abi": [], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "bytecode": { "generatedSources": [], "linkReferences": {}, "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220937880c84cec4969bca8cd1bc8a73daf1da90fbd60318295b251f7465a935f5464736f6c63430008030033", "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 PUSH25 0x80C84CEC4969BCA8CD1BC8A73DAF1DA90FBD60318295B251F7 CHAINID GAS SWAP4 0x5F SLOAD PUSH5 0x736F6C6343 STOP ADDMOD SUB STOP CALLER ", "sourceMap": "174:1350:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;174:1350:0;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "generatedSources": [], "immutableReferences": {}, "linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220937880c84cec4969bca8cd1bc8a73daf1da90fbd60318295b251f7465a935f5464736f6c63430008030033", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 PUSH25 0x80C84CEC4969BCA8CD1BC8A73DAF1DA90FBD60318295B251F7 CHAINID GAS SWAP4 0x5F SLOAD PUSH5 0x736F6C6343 STOP ADDMOD SUB STOP CALLER ", "sourceMap": "174:1350:0:-:0;;;;;;;;" }, "gasEstimates": { "creation": { "codeDepositCost": "17200", "executionCost": "103", "totalCost": "17303" }, "internal": { "safeApprove(address,address,uint256)": "infinite", "safeTransfer(address,address,uint256)": "infinite", "safeTransferETH(address,uint256)": "infinite", "safeTransferFrom(address,address,address,uint256)": "infinite" } }, "methodIdentifiers": {} }, "metadata": "{\"compiler\":{\"version\":\"0.8.3+commit.8d00100c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/uniswapv2/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/uniswapv2/libraries/TransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0\\n\\npragma solidity >=0.6.0;\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\\n\",\"keccak256\":\"0x7a9fb341d2bf50b0dfbce1d614f918ffc0598e1f3e31f8d2a949ab9ce25125af\",\"license\":\"GPL-3.0\"}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } } } }, "sources": { "contracts/uniswapv2/libraries/TransferHelper.sol": { "ast": { "absolutePath": "contracts/uniswapv2/libraries/TransferHelper.sol", "exportedSymbols": { "TransferHelper": [ 159 ] }, "id": 160, "license": "GPL-3.0", "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", ">=", "0.6", ".0" ], "nodeType": "PragmaDirective", "src": "37:24:0" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 159, "linearizedBaseContracts": [ 159 ], "name": "TransferHelper", "nameLocation": "182:14:0", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 43, "nodeType": "Block", "src": "272:285:0", "statements": [ { "assignments": [ 11, 13 ], "declarations": [ { "constant": false, "id": 11, "mutability": "mutable", "name": "success", "nameLocation": "353:7:0", "nodeType": "VariableDeclaration", "scope": 43, "src": "348:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 10, "name": "bool", "nodeType": "ElementaryTypeName", "src": "348:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, { "constant": false, "id": 13, "mutability": "mutable", "name": "data", "nameLocation": "375:4:0", "nodeType": "VariableDeclaration", "scope": 43, "src": "362:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 12, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "362:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "id": 23, "initialValue": { "arguments": [ { "arguments": [ { "hexValue": "30783039356561376233", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "417:10:0", "typeDescriptions": { "typeIdentifier": "t_rational_157198259_by_1", "typeString": "int_const 157198259" }, "value": "0x095ea7b3" }, { "id": 19, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5, "src": "429:2:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 20, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7, "src": "433:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_157198259_by_1", "typeString": "int_const 157198259" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 16, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "394:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "394:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, "id": 21, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "394:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 14, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3, "src": "383:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 15, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "call", "nodeType": "MemberAccess", "src": "383:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, "id": 22, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "383:57:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", "src": "347:93:0" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 39, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 25, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, "src": "458:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "components": [ { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 29, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 26, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13, "src": "470:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 27, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "470:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 28, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "485:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "470:16:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 32, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13, "src": "501:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "components": [ { "id": 34, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "508:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" }, "typeName": { "id": 33, "name": "bool", "nodeType": "ElementaryTypeName", "src": "508:4:0", "typeDescriptions": {} } } ], "id": 35, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "507:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" } ], "expression": { "id": 30, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "490:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 31, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "decode", "nodeType": "MemberAccess", "src": "490:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 36, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "490:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "470:44:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 38, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "469:46:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "458:57:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "5472616e7366657248656c7065723a20415050524f56455f4641494c4544", "id": 40, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "517:32:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00", "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\"" }, "value": "TransferHelper: APPROVE_FAILED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00", "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\"" } ], "id": 24, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "450:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 41, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "450:100:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 42, "nodeType": "ExpressionStatement", "src": "450:100:0" } ] }, "id": 44, "implemented": true, "kind": "function", "modifiers": [], "name": "safeApprove", "nameLocation": "212:11:0", "nodeType": "FunctionDefinition", "parameters": { "id": 8, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3, "mutability": "mutable", "name": "token", "nameLocation": "232:5:0", "nodeType": "VariableDeclaration", "scope": 44, "src": "224:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2, "name": "address", "nodeType": "ElementaryTypeName", "src": "224:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 5, "mutability": "mutable", "name": "to", "nameLocation": "247:2:0", "nodeType": "VariableDeclaration", "scope": 44, "src": "239:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4, "name": "address", "nodeType": "ElementaryTypeName", "src": "239:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 7, "mutability": "mutable", "name": "value", "nameLocation": "256:5:0", "nodeType": "VariableDeclaration", "scope": 44, "src": "251:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 6, "name": "uint", "nodeType": "ElementaryTypeName", "src": "251:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "223:39:0" }, "returnParameters": { "id": 9, "nodeType": "ParameterList", "parameters": [], "src": "272:0:0" }, "scope": 159, "src": "203:354:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 86, "nodeType": "Block", "src": "633:287:0", "statements": [ { "assignments": [ 54, 56 ], "declarations": [ { "constant": false, "id": 54, "mutability": "mutable", "name": "success", "nameLocation": "715:7:0", "nodeType": "VariableDeclaration", "scope": 86, "src": "710:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 53, "name": "bool", "nodeType": "ElementaryTypeName", "src": "710:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, { "constant": false, "id": 56, "mutability": "mutable", "name": "data", "nameLocation": "737:4:0", "nodeType": "VariableDeclaration", "scope": 86, "src": "724:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 55, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "724:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "id": 66, "initialValue": { "arguments": [ { "arguments": [ { "hexValue": "30786139303539636262", "id": 61, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "779:10:0", "typeDescriptions": { "typeIdentifier": "t_rational_2835717307_by_1", "typeString": "int_const 2835717307" }, "value": "0xa9059cbb" }, { "id": 62, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48, "src": "791:2:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 63, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "795:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_2835717307_by_1", "typeString": "int_const 2835717307" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 59, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "756:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 60, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "756:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, "id": 64, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "756:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 57, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, "src": "745:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 58, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "call", "nodeType": "MemberAccess", "src": "745:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",