@tokamak-network/thanos-contracts
Version:
1 lines • 81.2 kB
JSON
{"abi":[],"bytecode":{"object":"0x602c6032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c6343000814000a","sourceMap":"194:8214:75:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8214:75;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c6343000814000a","sourceMap":"194:8214:75:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/libraries/Address.sol\":\"Address\"},\"evmVersion\":\"shanghai\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/tokamak-contracts/USDC/libraries/Address.sol\":{\"keccak256\":\"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246\",\"dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/tokamak-contracts/USDC/libraries/Address.sol":"Address"},"evmVersion":"shanghai","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/libraries/Address.sol":{"keccak256":"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f","urls":["bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246","dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","details":"Collection of functions related to the address type"},"ast":{"absolutePath":"src/tokamak-contracts/USDC/libraries/Address.sol","id":54766,"exportedSymbols":{"Address":[54765]},"nodeType":"SourceUnit","src":"101:8308:75","nodes":[{"id":54472,"nodeType":"PragmaDirective","src":"101:23:75","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":54765,"nodeType":"ContractDefinition","src":"194:8214:75","nodes":[{"id":54488,"nodeType":"FunctionDefinition","src":"1175:320:75","nodes":[],"body":{"id":54487,"nodeType":"Block","src":"1241:254:75","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":54481,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54476,"src":"1465:7:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1473:4:75","memberName":"code","nodeType":"MemberAccess","src":"1465:12:75","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":54483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:6:75","memberName":"length","nodeType":"MemberAccess","src":"1465:19:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":54484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":54480,"id":54486,"nodeType":"Return","src":"1458:30:75"}]},"documentation":{"id":54474,"nodeType":"StructuredDocumentation","src":"216:954:75","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:75","parameters":{"id":54477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54476,"mutability":"mutable","name":"account","nameLocation":"1203:7:75","nodeType":"VariableDeclaration","scope":54488,"src":"1195:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54475,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:75"},"returnParameters":{"id":54480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54488,"src":"1235:4:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54478,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:75"},"scope":54765,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":54522,"nodeType":"FunctionDefinition","src":"2419:313:75","nodes":[],"body":{"id":54521,"nodeType":"Block","src":"2490:242:75","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":54499,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2516:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$54765","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$54765","typeString":"library Address"}],"id":54498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2508:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54497,"name":"address","nodeType":"ElementaryTypeName","src":"2508:7:75","typeDescriptions":{}}},"id":54500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2508:13:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2522:7:75","memberName":"balance","nodeType":"MemberAccess","src":"2508:21:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":54502,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54493,"src":"2533:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2508:31:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":54504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2541:31:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":54496,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2500:7:75","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:73:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54506,"nodeType":"ExpressionStatement","src":"2500:73:75"},{"assignments":[54508,null],"declarations":[{"constant":false,"id":54508,"mutability":"mutable","name":"success","nameLocation":"2590:7:75","nodeType":"VariableDeclaration","scope":54521,"src":"2585:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54507,"name":"bool","nodeType":"ElementaryTypeName","src":"2585:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":54515,"initialValue":{"arguments":[{"hexValue":"","id":54513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2634:2:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":54509,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54491,"src":"2602:9:75","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":54510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2612:4:75","memberName":"call","nodeType":"MemberAccess","src":"2602:14:75","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":54512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":54511,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54493,"src":"2625:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2602:31:75","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2602:35:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2584:53:75"},{"expression":{"arguments":[{"id":54517,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54508,"src":"2655:7:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":54518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2664:60:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":54516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2647:7:75","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2647:78:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54520,"nodeType":"ExpressionStatement","src":"2647:78:75"}]},"documentation":{"id":54489,"nodeType":"StructuredDocumentation","src":"1501:913:75","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions\n pattern]."},"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2428:9:75","parameters":{"id":54494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54491,"mutability":"mutable","name":"recipient","nameLocation":"2454:9:75","nodeType":"VariableDeclaration","scope":54522,"src":"2438:25:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":54490,"name":"address","nodeType":"ElementaryTypeName","src":"2438:15:75","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":54493,"mutability":"mutable","name":"amount","nameLocation":"2473:6:75","nodeType":"VariableDeclaration","scope":54522,"src":"2465:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54492,"name":"uint256","nodeType":"ElementaryTypeName","src":"2465:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2437:43:75"},"returnParameters":{"id":54495,"nodeType":"ParameterList","parameters":[],"src":"2490:0:75"},"scope":54765,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":54539,"nodeType":"FunctionDefinition","src":"3481:173:75","nodes":[],"body":{"id":54538,"nodeType":"Block","src":"3570:84:75","nodes":[],"statements":[{"expression":{"arguments":[{"id":54533,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54525,"src":"3600:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54527,"src":"3608:4:75","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":54535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3614:32:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":54532,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[54539,54559],"referencedDeclaration":54559,"src":"3587:12:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":54536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3587:60:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":54531,"id":54537,"nodeType":"Return","src":"3580:67:75"}]},"documentation":{"id":54523,"nodeType":"StructuredDocumentation","src":"2738:738:75","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use\n https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3490:12:75","parameters":{"id":54528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54525,"mutability":"mutable","name":"target","nameLocation":"3511:6:75","nodeType":"VariableDeclaration","scope":54539,"src":"3503:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54524,"name":"address","nodeType":"ElementaryTypeName","src":"3503:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54527,"mutability":"mutable","name":"data","nameLocation":"3532:4:75","nodeType":"VariableDeclaration","scope":54539,"src":"3519:17:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54526,"name":"bytes","nodeType":"ElementaryTypeName","src":"3519:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3502:35:75"},"returnParameters":{"id":54531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54530,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54539,"src":"3556:12:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54529,"name":"bytes","nodeType":"ElementaryTypeName","src":"3556:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3555:14:75"},"scope":54765,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":54559,"nodeType":"FunctionDefinition","src":"3876:243:75","nodes":[],"body":{"id":54558,"nodeType":"Block","src":"4043:76:75","nodes":[],"statements":[{"expression":{"arguments":[{"id":54552,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54542,"src":"4082:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54553,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54544,"src":"4090:4:75","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":54554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4096:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":54555,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54546,"src":"4099:12:75","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":54551,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[54579,54629],"referencedDeclaration":54629,"src":"4060:21:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":54556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:52:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":54550,"id":54557,"nodeType":"Return","src":"4053:59:75"}]},"documentation":{"id":54540,"nodeType":"StructuredDocumentation","src":"3660:211:75","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3885:12:75","parameters":{"id":54547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54542,"mutability":"mutable","name":"target","nameLocation":"3915:6:75","nodeType":"VariableDeclaration","scope":54559,"src":"3907:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54541,"name":"address","nodeType":"ElementaryTypeName","src":"3907:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54544,"mutability":"mutable","name":"data","nameLocation":"3944:4:75","nodeType":"VariableDeclaration","scope":54559,"src":"3931:17:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54543,"name":"bytes","nodeType":"ElementaryTypeName","src":"3931:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54546,"mutability":"mutable","name":"errorMessage","nameLocation":"3972:12:75","nodeType":"VariableDeclaration","scope":54559,"src":"3958:26:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":54545,"name":"string","nodeType":"ElementaryTypeName","src":"3958:6:75","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3897:93:75"},"returnParameters":{"id":54550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54559,"src":"4025:12:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54548,"name":"bytes","nodeType":"ElementaryTypeName","src":"4025:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4024:14:75"},"scope":54765,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":54579,"nodeType":"FunctionDefinition","src":"4481:224:75","nodes":[],"body":{"id":54578,"nodeType":"Block","src":"4594:111:75","nodes":[],"statements":[{"expression":{"arguments":[{"id":54572,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54562,"src":"4633:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54573,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54564,"src":"4641:4:75","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":54574,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54566,"src":"4647:5:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":54575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4654:43:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":54571,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[54579,54629],"referencedDeclaration":54629,"src":"4611:21:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":54576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4611:87:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":54570,"id":54577,"nodeType":"Return","src":"4604:94:75"}]},"documentation":{"id":54560,"nodeType":"StructuredDocumentation","src":"4125:351:75","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4490:21:75","parameters":{"id":54567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54562,"mutability":"mutable","name":"target","nameLocation":"4520:6:75","nodeType":"VariableDeclaration","scope":54579,"src":"4512:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54561,"name":"address","nodeType":"ElementaryTypeName","src":"4512:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54564,"mutability":"mutable","name":"data","nameLocation":"4541:4:75","nodeType":"VariableDeclaration","scope":54579,"src":"4528:17:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54563,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54566,"mutability":"mutable","name":"value","nameLocation":"4555:5:75","nodeType":"VariableDeclaration","scope":54579,"src":"4547:13:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54565,"name":"uint256","nodeType":"ElementaryTypeName","src":"4547:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:50:75"},"returnParameters":{"id":54570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54569,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54579,"src":"4580:12:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54568,"name":"bytes","nodeType":"ElementaryTypeName","src":"4580:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4579:14:75"},"scope":54765,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":54629,"nodeType":"FunctionDefinition","src":"4953:521:75","nodes":[],"body":{"id":54628,"nodeType":"Block","src":"5152:322:75","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":54596,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5178:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$54765","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$54765","typeString":"library Address"}],"id":54595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5170:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54594,"name":"address","nodeType":"ElementaryTypeName","src":"5170:7:75","typeDescriptions":{}}},"id":54597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5170:13:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5184:7:75","memberName":"balance","nodeType":"MemberAccess","src":"5170:21:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":54599,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54586,"src":"5195:5:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5170:30:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":54601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5202:40:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":54593,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5162:7:75","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5162:81:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54603,"nodeType":"ExpressionStatement","src":"5162:81:75"},{"expression":{"arguments":[{"arguments":[{"id":54606,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54582,"src":"5272:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54605,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54488,"src":"5261:10:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":54607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5261:18:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":54608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5281:31:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":54604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5253:7:75","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:60:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54610,"nodeType":"ExpressionStatement","src":"5253:60:75"},{"assignments":[54612,54614],"declarations":[{"constant":false,"id":54612,"mutability":"mutable","name":"success","nameLocation":"5330:7:75","nodeType":"VariableDeclaration","scope":54628,"src":"5325:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54611,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":54614,"mutability":"mutable","name":"returndata","nameLocation":"5352:10:75","nodeType":"VariableDeclaration","scope":54628,"src":"5339:23:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54613,"name":"bytes","nodeType":"ElementaryTypeName","src":"5339:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":54621,"initialValue":{"arguments":[{"id":54619,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54584,"src":"5394:4:75","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":54615,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54582,"src":"5366:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5373:4:75","memberName":"call","nodeType":"MemberAccess","src":"5366:11:75","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":54618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":54617,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54586,"src":"5386:5:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5366:27:75","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:33:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5324:75:75"},{"expression":{"arguments":[{"id":54623,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54612,"src":"5433:7:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":54624,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54614,"src":"5442:10:75","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":54625,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54588,"src":"5454:12:75","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":54622,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54764,"src":"5416:16:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":54626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5416:51:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":54592,"id":54627,"nodeType":"Return","src":"5409:58:75"}]},"documentation":{"id":54580,"nodeType":"StructuredDocumentation","src":"4711:237:75","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4962:21:75","parameters":{"id":54589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54582,"mutability":"mutable","name":"target","nameLocation":"5001:6:75","nodeType":"VariableDeclaration","scope":54629,"src":"4993:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54581,"name":"address","nodeType":"ElementaryTypeName","src":"4993:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54584,"mutability":"mutable","name":"data","nameLocation":"5030:4:75","nodeType":"VariableDeclaration","scope":54629,"src":"5017:17:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54583,"name":"bytes","nodeType":"ElementaryTypeName","src":"5017:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54586,"mutability":"mutable","name":"value","nameLocation":"5052:5:75","nodeType":"VariableDeclaration","scope":54629,"src":"5044:13:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54585,"name":"uint256","nodeType":"ElementaryTypeName","src":"5044:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54588,"mutability":"mutable","name":"errorMessage","nameLocation":"5081:12:75","nodeType":"VariableDeclaration","scope":54629,"src":"5067:26:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":54587,"name":"string","nodeType":"ElementaryTypeName","src":"5067:6:75","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4983:116:75"},"returnParameters":{"id":54592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54591,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54629,"src":"5134:12:75","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54590,"name":"bytes","nodeType":"ElementaryTypeName","src":"5134:5:75","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5133:14:75"},"scope":54765,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":54646,"nodeType":"FunctionDefinition","src":"5651:197:75","nodes":[],"body":{"id":54645,"nodeType":"Block","src":"5751:97:75","nodes":[],"statements":[{"expression":{"arguments":[{"id":54640,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54632,"src":"5787:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54641,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54634,"src":"5795:4:75","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":54642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5801:39:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":54639,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[54646,54681],"referencedDeclaration":54681,"src":"5768:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":54643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5768:73:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":54638,"id":54644,"nodeType":"Return","src":"5761:80:75"}]},"documentation":{"id":54630,"nodeType":"StructuredDocumentation","src":"5480:166:75","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5660:18:75","parameters":{"id":54635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54632,"mutability":"mutable","name":"target","nameLocation":"5687:6: