UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

887 lines (886 loc) 423 kB
{ "contractName": "WitnetPriceFeedsLib", "abi": [ { "inputs": [ { "internalType": "bytes", "name": "initcode", "type": "bytes" }, { "internalType": "bytes", "name": "constructorParams", "type": "bytes" } ], "name": "determinePriceSolverAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "prefix", "type": "bytes32" }, { "internalType": "string", "name": "caption", "type": "string" } ], "name": "validateCaption", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initcode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"constructorParams\",\"type\":\"bytes\"}],\"name\":\"determinePriceSolverAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"prefix\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"}],\"name\":\"validateCaption\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Witnet Foundation.\",\"details\":\"Features:- deployment of counter-factual IWitnetPriceSolver instances.- validation of feed caption strings.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Ancillary deployable library for WitnetPriceFeeds.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libs/WitnetPriceFeedsLib.sol\":\"WitnetPriceFeedsLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/IWitnetPriceSolver.sol\":{\"keccak256\":\"0x858441dafaa0617a8d679b3cda493b418284d865899c3f235cb3f41535db7a16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43d25f8985aede9c32cee369872a9f21db41c7b9abc87d5d4d02ff7e15879b98\",\"dweb:/ipfs/QmdoZnVpx9FZeg8KHgMjGRLmVKtdn7zzFTadFUjT8xd3dR\"]},\"project:/contracts/interfaces/IWitnetPriceSolverDeployer.sol\":{\"keccak256\":\"0x52d4e504fb6e699893a592ba5723794688c70ad36af7eb5ffdc08e692b2ddb21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ab7f54312c0c8443e9220d41a72513ef84377d315cad3c49397da94361d5c42\",\"dweb:/ipfs/QmRTJtxnoRhh9AXMixRvSa8BT4vprZttLgqGzmLEjZG6oB\"]},\"project:/contracts/libs/Slices.sol\":{\"keccak256\":\"0x9d046fa558be922c9625a1fdc470f6e68b3c9b5745b6185cb4a4fc59181fa006\",\"license\":\"APACHE-2.0\",\"urls\":[\"bzz-raw://ab19ba09faf83aaa92947f0a0907f6522be89279a9a1b0e53d5393a23085947d\",\"dweb:/ipfs/QmeE9MwhpSFNTwyqDFpMFjftrJKR1edBhLjV3bdKQQHUVm\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x65a87375dd79d63a83fb454b7199b6c999bd59c50b3b59d521c5c4d45a7d3cc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca865b681d810c2fc5c3672ea6343c3bdf6fd71764ab824d25994744dc85866b\",\"dweb:/ipfs/QmPGcP3xGTNZfsQ9GSKdujNLRVs8dWDdubyUko1rbQqJNv\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0xa14570492eb5a313ddbacae0185c850ec99c67211eb33989a5e21d31bf06a150\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e83c11edb49cab6a767c0b685825bc22ece0d3d2897e0d54fe1923df5cc76ba5\",\"dweb:/ipfs/QmdLDgCc3tnKbgRrXwfNzsg6uUDirNmjvBB8V3iMmnD69a\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xb346547ff731163beea2c657c52675cdf7936691d566a76a045577cf9c34ade0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d4b5b6424a033584b41f1204d635db98fda9ca9bd2a614c9d82539a3e4e6529\",\"dweb:/ipfs/QmW6Qy3wWpzHSECYaCPaf9LWGfPqWDKVoP2kPSNNQu7LMQ\"]},\"project:/contracts/libs/WitnetPriceFeedsLib.sol\":{\"keccak256\":\"0x28b4a473e8432d83ecdfcb9b712277e51f1090e7f827cec14bf0ad56efebf3df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09a3799d20b35a94aa3246706426ee54bd18031aa68c13f93554491f5d088d0\",\"dweb:/ipfs/QmUUt459tcusH5TnriFpNDTeKCfEtEX6E6Y8RANFzfLDVb\"]},\"project:/contracts/libs/WitnetV2.sol\":{\"keccak256\":\"0xb276a6da373bfbe9cd942dd7e59979cda898215d1e36ab3df95a6d6cc6ff770f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc4890876b9bc64f501ccdd48408bb63724865cb2ce8d2057f6b318540adce7c\",\"dweb:/ipfs/QmPMHPdbCsKBavhiLcaDgQ9EjNSvwwzv8TKffotcCv1ctP\"]}},\"version\":1}", "bytecode": "0x610c8b610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c8063a55b471c14610050578063e78d44d91461008d578063ff75890f146100b2575b600080fd5b81801561005c57600080fd5b5061007061006b36600461098c565b6100c5565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a061009b3660046109f8565b610202565b60405160ff9091168152602001610084565b6100706100c036600461098c565b610440565b60006100d385858585610440565b9050806001600160a01b03163b6000036101fa5760006100f5868686866104c6565b90506000808251602084016000f59050809250636d7f4b0b60e11b6001600160e01b031916836001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c9190610a44565b6001600160e01b031916146101f75760405162461bcd60e51b815260206004820152603660248201527f5769746e6574507269636546656564734c69623a20756e636f6d706c69616e746044820152751039b7b63b32b91034b6b83632b6b2b73a30ba34b7b760511b60648201526084015b60405180910390fd5b50505b949350505050565b60006001600160d01b031984166102198385610a75565b6001600160d01b031916146102805760405162461bcd60e51b815260206004820152602760248201527f5769746e6574507269636546656564734c69623a206261642063617074696f6e604482015266040e0e4caccd2f60cb1b60648201526084016101ee565b60006102c184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104f892505050565b60408051808201825260018152602d60f81b60208083019182528351808501855260008082529082018190528451808601909552925184528301529192509061030a8383610525565b610315906001610abb565b67ffffffffffffffff81111561032d5761032d610ad4565b60405190808252806020026020018201604052801561036057816020015b606081526020019060019003908161034b5790505b50905060005b81518110156103a65761038161037c85856105c6565b6105e5565b82828151811061039357610393610aea565b6020908102919091010152600101610366565b506000806103d983600185516103bc9190610b00565b815181106103cc576103cc610aea565b602002602001015161064e565b91509150806104345760405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564734c69623a2062616420646563696d616c6044820152607360f81b60648201526084016101ee565b50979650505050505050565b60006001600160f81b03193082610459888888886104c6565b80516020918201206040516104a595949392016001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6060848484846040516020016104df9493929190610b13565b6040516020818303038152906040529050949350505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b600080826000015161054985600001518660200151866000015187602001516106fe565b6105539190610abb565b90505b835160208501516105679190610abb565b81116105bf578161057781610b35565b92505082600001516105ae8560200151836105929190610b00565b865161059e9190610b00565b83866000015187602001516106fe565b6105b89190610abb565b9050610556565b5092915050565b60408051808201909152600080825260208201526105bf83838361081e565b60606000826000015167ffffffffffffffff81111561060657610606610ad4565b6040519080825280601f01601f191660200182016040528015610630576020820181803683370190505b50905060006020820190506105bf81856020015186600001516108c9565b60008060005b83518110156106f3576000603085838151811061067357610673610aea565b016020015160f81c0360ff1610806106aa57506009603085838151811061069c5761069c610aea565b016020015160f81c0360ff16115b156106bb5750600093849350915050565b60018185510303600a0a60308583815181106106d9576106d9610aea565b016020015160f81c0360ff16029290920191600101610654565b509092600192509050565b6000838186851161080957602085116107b8576000851561074a576001610726876020610b00565b610731906008610b4e565b61073c906002610c49565b6107469190610b00565b1990505b8451811660008761075b8b8b610abb565b6107659190610b00565b855190915083165b8281146107aa57818610610792576107858b8b610abb565b96505050505050506101fa565b8561079c81610b35565b96505083865116905061076d565b8596505050505050506101fa565b508383206000905b6107ca8689610b00565b8211610807578583208082036107e657839450505050506101fa565b6107f1600185610abb565b93505081806107ff90610b35565b9250506107c0565b505b6108138787610abb565b979650505050505050565b6040805180820190915260008082526020820152600061085085600001518660200151866000015187602001516106fe565b60208087018051918601919091525190915061086c9082610b00565b83528451602086015161087f9190610abb565b810361088e57600085526108c0565b8351835161089c9190610abb565b855186906108ab908390610b00565b90525083516108ba9082610abb565b60208601525b50909392505050565b6020811061090157815183526108e0602084610abb565b92506108ed602083610abb565b91506108fa602082610b00565b90506108c9565b6000198115610930576001610917836020610b00565b61092390610100610c49565b61092d9190610b00565b90505b9151835183169219169190911790915250565b60008083601f84011261095557600080fd5b50813567ffffffffffffffff81111561096d57600080fd5b60208301915083602082850101111561098557600080fd5b9250929050565b600080600080604085870312156109a257600080fd5b843567ffffffffffffffff808211156109ba57600080fd5b6109c688838901610943565b909650945060208701359150808211156109df57600080fd5b506109ec87828801610943565b95989497509550505050565b600080600060408486031215610a0d57600080fd5b83359250602084013567ffffffffffffffff811115610a2b57600080fd5b610a3786828701610943565b9497909650939450505050565b600060208284031215610a5657600080fd5b81516001600160e01b031981168114610a6e57600080fd5b9392505050565b6001600160d01b03198135818116916006851015610a9d5780818660060360031b1b83161692505b505092915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ace57610ace610aa5565b92915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b81810381811115610ace57610ace610aa5565b8385823760008482016000815283858237600093019283525090949350505050565b600060018201610b4757610b47610aa5565b5060010190565b8082028115828204841417610ace57610ace610aa5565b600181815b80851115610ba0578160001904821115610b8657610b86610aa5565b80851615610b9357918102915b93841c9390800290610b6a565b509250929050565b600082610bb757506001610ace565b81610bc457506000610ace565b8160018114610bda5760028114610be457610c00565b6001915050610ace565b60ff841115610bf557610bf5610aa5565b50506001821b610ace565b5060208310610133831016604e8410600b8410161715610c23575081810a610ace565b610c2d8383610b65565b8060001904821115610c4157610c41610aa5565b029392505050565b6000610a6e8383610ba856fea2646970667358221220873cefac74f775ab05dded04e5e1156cab14c588b7ba18bd6cab1142839d7ca964736f6c63430008190033", "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c8063a55b471c14610050578063e78d44d91461008d578063ff75890f146100b2575b600080fd5b81801561005c57600080fd5b5061007061006b36600461098c565b6100c5565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a061009b3660046109f8565b610202565b60405160ff9091168152602001610084565b6100706100c036600461098c565b610440565b60006100d385858585610440565b9050806001600160a01b03163b6000036101fa5760006100f5868686866104c6565b90506000808251602084016000f59050809250636d7f4b0b60e11b6001600160e01b031916836001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c9190610a44565b6001600160e01b031916146101f75760405162461bcd60e51b815260206004820152603660248201527f5769746e6574507269636546656564734c69623a20756e636f6d706c69616e746044820152751039b7b63b32b91034b6b83632b6b2b73a30ba34b7b760511b60648201526084015b60405180910390fd5b50505b949350505050565b60006001600160d01b031984166102198385610a75565b6001600160d01b031916146102805760405162461bcd60e51b815260206004820152602760248201527f5769746e6574507269636546656564734c69623a206261642063617074696f6e604482015266040e0e4caccd2f60cb1b60648201526084016101ee565b60006102c184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104f892505050565b60408051808201825260018152602d60f81b60208083019182528351808501855260008082529082018190528451808601909552925184528301529192509061030a8383610525565b610315906001610abb565b67ffffffffffffffff81111561032d5761032d610ad4565b60405190808252806020026020018201604052801561036057816020015b606081526020019060019003908161034b5790505b50905060005b81518110156103a65761038161037c85856105c6565b6105e5565b82828151811061039357610393610aea565b6020908102919091010152600101610366565b506000806103d983600185516103bc9190610b00565b815181106103cc576103cc610aea565b602002602001015161064e565b91509150806104345760405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564734c69623a2062616420646563696d616c6044820152607360f81b60648201526084016101ee565b50979650505050505050565b60006001600160f81b03193082610459888888886104c6565b80516020918201206040516104a595949392016001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6060848484846040516020016104df9493929190610b13565b6040516020818303038152906040529050949350505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b600080826000015161054985600001518660200151866000015187602001516106fe565b6105539190610abb565b90505b835160208501516105679190610abb565b81116105bf578161057781610b35565b92505082600001516105ae8560200151836105929190610b00565b865161059e9190610b00565b83866000015187602001516106fe565b6105b89190610abb565b9050610556565b5092915050565b60408051808201909152600080825260208201526105bf83838361081e565b60606000826000015167ffffffffffffffff81111561060657610606610ad4565b6040519080825280601f01601f191660200182016040528015610630576020820181803683370190505b50905060006020820190506105bf81856020015186600001516108c9565b60008060005b83518110156106f3576000603085838151811061067357610673610aea565b016020015160f81c0360ff1610806106aa57506009603085838151811061069c5761069c610aea565b016020015160f81c0360ff16115b156106bb5750600093849350915050565b60018185510303600a0a60308583815181106106d9576106d9610aea565b016020015160f81c0360ff16029290920191600101610654565b509092600192509050565b6000838186851161080957602085116107b8576000851561074a576001610726876020610b00565b610731906008610b4e565b61073c906002610c49565b6107469190610b00565b1990505b8451811660008761075b8b8b610abb565b6107659190610b00565b855190915083165b8281146107aa57818610610792576107858b8b610abb565b96505050505050506101fa565b8561079c81610b35565b96505083865116905061076d565b8596505050505050506101fa565b508383206000905b6107ca8689610b00565b8211610807578583208082036107e657839450505050506101fa565b6107f1600185610abb565b93505081806107ff90610b35565b9250506107c0565b505b6108138787610abb565b979650505050505050565b6040805180820190915260008082526020820152600061085085600001518660200151866000015187602001516106fe565b60208087018051918601919091525190915061086c9082610b00565b83528451602086015161087f9190610abb565b810361088e57600085526108c0565b8351835161089c9190610abb565b855186906108ab908390610b00565b90525083516108ba9082610abb565b60208601525b50909392505050565b6020811061090157815183526108e0602084610abb565b92506108ed602083610abb565b91506108fa602082610b00565b90506108c9565b6000198115610930576001610917836020610b00565b61092390610100610c49565b61092d9190610b00565b90505b9151835183169219169190911790915250565b60008083601f84011261095557600080fd5b50813567ffffffffffffffff81111561096d57600080fd5b60208301915083602082850101111561098557600080fd5b9250929050565b600080600080604085870312156109a257600080fd5b843567ffffffffffffffff808211156109ba57600080fd5b6109c688838901610943565b909650945060208701359150808211156109df57600080fd5b506109ec87828801610943565b95989497509550505050565b600080600060408486031215610a0d57600080fd5b83359250602084013567ffffffffffffffff811115610a2b57600080fd5b610a3786828701610943565b9497909650939450505050565b600060208284031215610a5657600080fd5b81516001600160e01b031981168114610a6e57600080fd5b9392505050565b6001600160d01b03198135818116916006851015610a9d5780818660060360031b1b83161692505b505092915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ace57610ace610aa5565b92915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b81810381811115610ace57610ace610aa5565b8385823760008482016000815283858237600093019283525090949350505050565b600060018201610b4757610b47610aa5565b5060010190565b8082028115828204841417610ace57610ace610aa5565b600181815b80851115610ba0578160001904821115610b8657610b86610aa5565b80851615610b9357918102915b93841c9390800290610b6a565b509250929050565b600082610bb757506001610ace565b81610bc457506000610ace565b8160018114610bda5760028114610be457610c00565b6001915050610ace565b60ff841115610bf557610bf5610aa5565b50506001821b610ace565b5060208310610133831016604e8410600b8410161715610c23575081810a610ace565b610c2d8383610b65565b8060001904821115610c4157610c41610aa5565b029392505050565b6000610a6e8383610ba856fea2646970667358221220873cefac74f775ab05dded04e5e1156cab14c588b7ba18bd6cab1142839d7ca964736f6c63430008190033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ { "ast": { "nativeSrc": "0:7056:84", "nodeType": "YulBlock", "src": "0:7056:84", "statements": [ { "nativeSrc": "6:3:84", "nodeType": "YulBlock", "src": "6:3:84", "statements": [] }, { "body": { "nativeSrc": "86:275:84", "nodeType": "YulBlock", "src": "86:275:84", "statements": [ { "body": { "nativeSrc": "135:16:84", "nodeType": "YulBlock", "src": "135:16:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "144:1:84", "nodeType": "YulLiteral", "src": "144:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "147:1:84", "nodeType": "YulLiteral", "src": "147:1:84", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "137:6:84", "nodeType": "YulIdentifier", "src": "137:6:84" }, "nativeSrc": "137:12:84", "nodeType": "YulFunctionCall", "src": "137:12:84" }, "nativeSrc": "137:12:84", "nodeType": "YulExpressionStatement", "src": "137:12:84" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nativeSrc": "114:6:84", "nodeType": "YulIdentifier", "src": "114:6:84" }, { "kind": "number", "nativeSrc": "122:4:84", "nodeType": "YulLiteral", "src": "122:4:84", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nativeSrc": "110:3:84", "nodeType": "YulIdentifier", "src": "110:3:84" }, "nativeSrc": "110:17:84", "nodeType": "YulFunctionCall", "src": "110:17:84" }, { "name": "end", "nativeSrc": "129:3:84", "nodeType": "YulIdentifier", "src": "129:3:84" } ], "functionName": { "name": "slt", "nativeSrc": "106:3:84", "nodeType": "YulIdentifier", "src": "106:3:84" }, "nativeSrc": "106:27:84", "nodeType": "YulFunctionCall", "src": "106:27:84" } ], "functionName": { "name": "iszero", "nativeSrc": "99:6:84", "nodeType": "YulIdentifier", "src": "99:6:84" }, "nativeSrc": "99:35:84", "nodeType": "YulFunctionCall", "src": "99:35:84" }, "nativeSrc": "96:55:84", "nodeType": "YulIf", "src": "96:55:84" }, { "nativeSrc": "160:30:84", "nodeType": "YulAssignment", "src": "160:30:84", "value": { "arguments": [ { "name": "offset", "nativeSrc": "183:6:84", "nodeType": "YulIdentifier", "src": "183:6:84" } ], "functionName": { "name": "calldataload", "nativeSrc": "170:12:84", "nodeType": "YulIdentifier", "src": "170:12:84" }, "nativeSrc": "170:20:84", "nodeType": "YulFunctionCall", "src": "170:20:84" }, "variableNames": [ { "name": "length", "nativeSrc": "160:6:84", "nodeType": "YulIdentifier", "src": "160:6:84" } ] }, { "body": { "nativeSrc": "233:16:84", "nodeType": "YulBlock", "src": "233:16:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "242:1:84", "nodeType": "YulLiteral", "src": "242:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "245:1:84", "nodeType": "YulLiteral", "src": "245:1:84", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "235:6:84", "nodeType": "YulIdentifier", "src": "235:6:84" }, "nativeSrc": "235:12:84", "nodeType": "YulFunctionCall", "src": "235:12:84" }, "nativeSrc": "235:12:84", "nodeType": "YulExpressionStatement", "src": "235:12:84" } ] }, "condition": { "arguments": [ { "name": "length", "nativeSrc": "205:6:84", "nodeType": "YulIdentifier", "src": "205:6:84" }, { "kind": "number", "nativeSrc": "213:18:84", "nodeType": "YulLiteral", "src": "213:18:84", "type": "", "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", "nativeSrc": "202:2:84", "nodeType": "YulIdentifier", "src": "202:2:84" }, "nativeSrc": "202:30:84", "nodeType": "YulFunctionCall", "src": "202:30:84" }, "nativeSrc": "199:50:84", "nodeType": "YulIf", "src": "199:50:84" }, { "nativeSrc": "258:29:84", "nodeType": "YulAssignment", "src": "258:29:84", "value": { "arguments": [ { "name": "offset", "nativeSrc": "274:6:84", "nodeType": "YulIdentifier", "src": "274:6:84" }, { "kind": "number", "nativeSrc": "282:4:84", "nodeType": "YulLiteral", "src": "282:4:84", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nativeSrc": "270:3:84", "nodeType": "YulIdentifier", "src": "270:3:84" }, "nativeSrc": "270:17:84", "nodeType": "YulFunctionCall", "src": "270:17:84" }, "variableNames": [ { "name": "arrayPos", "nativeSrc": "258:8:84", "nodeType": "YulIdentifier", "src": "258:8:84" } ] }, { "body": { "nativeSrc": "339:16:84", "nodeType": "YulBlock", "src": "339:16:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "348:1:84", "nodeType": "YulLiteral", "src": "348:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "351:1:84", "nodeType": "YulLiteral", "src": "351:1:84", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "341:6:84", "nodeType": "YulIdentifier", "src": "341:6:84" }, "nativeSrc": "341:12:84", "nodeType": "YulFunctionCall", "src": "341:12:84" }, "nativeSrc": "341:12:84", "nodeType": "YulExpressionStatement", "src": "341:12:84" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nativeSrc": "310:6:84", "nodeType": "YulIdentifier", "src": "310:6:84" }, { "name": "length", "nativeSrc": "318:6:84", "nodeType": "YulIdentifier", "src": "318:6:84" } ], "functionName": { "name": "add", "nativeSrc": "306:3:84", "nodeType": "YulIdentifier", "src": "306:3:84" }, "nativeSrc": "306:19:84", "nodeType": "YulFunctionCall", "src": "306:19:84" }, { "kind": "number", "nativeSrc": "327:4:84", "nodeType": "YulLiteral", "src": "327:4:84", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nativeSrc": "302:3:84", "nodeType": "YulIdentifier", "src": "302:3:84" }, "nativeSrc": "302:30:84", "nodeType": "YulFunctionCall", "src": "302:30:84" }, { "name": "end", "nativeSrc": "334:3:84", "nodeType": "YulIdentifier", "src": "334:3:84" } ], "functionName": { "name": "gt", "nativeSrc": "299:2:84", "nodeType": "YulIdentifier", "src": "299:2:84" }, "nativeSrc": "299:39:84", "nodeType": "YulFunctionCall", "src": "299:39:84" }, "nativeSrc": "296:59:84", "nodeType": "YulIf", "src": "296:59:84" } ] }, "name": "abi_decode_bytes_calldata", "nativeSrc": "14:347:84", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nativeSrc": "49:6:84", "nodeType": "YulTypedName", "src": "49:6:84", "type": "" }, { "name": "end", "nativeSrc": "57:3:84", "nodeType": "YulTypedName", "src": "57:3:84", "type": "" } ], "returnVariables": [ { "name": "arrayPos", "nativeSrc": "65:8:84", "nodeType": "YulTypedName", "src": "65:8:84", "type": "" }, { "name": "length", "nativeSrc": "75:6:84", "nodeType": "YulTypedName", "src": "75:6:84", "type": "" } ], "src": "14:347:84" }, { "body": { "nativeSrc": "491:592:84", "nodeType": "YulBlock", "src": "491:592:84", "statements": [ { "body": { "nativeSrc": "537:16:84", "nodeType": "YulBlock", "src": "537:16:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "546:1:84", "nodeType": "YulLiteral", "src": "546:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "549:1:84", "nodeType": "YulLiteral", "src": "549:1:84", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "539:6:84", "nodeType": "YulIdentifier", "src": "539:6:84" }, "nativeSrc": "539:12:84", "nodeType": "YulFunctionCall", "src": "539:12:84" }, "nativeSrc": "539:12:84", "nodeType": "YulExpressionStatement", "src": "539:12:84" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nativeSrc": "512:7:84", "nodeType": "YulIdentifier", "src": "512:7:84" }, { "name": "headStart", "nativeSrc": "521:9:84", "nodeType": "YulIdentifier", "src": "521:9:84" } ], "functionName": { "name": "sub", "nativeSrc": "508:3:84", "nodeType": "YulIdentifier", "src": "508:3:84" }, "nativeSrc": "508:23:84", "nodeType": "YulFunctionCall", "src": "508:23:84" }, { "kind": "number", "nativeSrc": "533:2:84", "nodeType": "YulLiteral", "src": "533:2:84", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nativeSrc": "504:3:84", "nodeType": "YulIdentifier", "src": "504:3:84" }, "nativeSrc": "504:32:84", "nodeType": "YulFunctionCall", "src": "504:32:84" }, "nativeSrc": "501:52:84", "nodeType": "YulIf", "src": "501:52:84" }, { "nativeSrc": "562:37:84", "nodeType": "YulVariableDeclaration", "src": "562:37:84", "value": { "arguments": [ { "name": "headStart", "nativeSrc": "589:9:84", "nodeType": "YulIdentifier", "src": "589:9:84" } ], "functionName": { "name": "calldataload", "nativeSrc": "576:12:84", "nodeType": "YulIdentifier", "src": "576:12:84" }, "nativeSrc": "576:23:84", "nodeType": "YulFunctionCall", "src": "576:23:84" }, "variables": [ { "name": "offset", "nativeSrc": "566:6:84", "nodeType": "YulTypedName", "src": "566:6:84", "type": "" } ] }, { "nativeSrc": "608:28:84", "nodeType": "YulVariableDeclaration", "src": "608:28:84", "value": { "kind": "number", "nativeSrc": "618:18:84", "nodeType": "YulLiteral", "src": "618:18:84", "type": "", "value": "0xffffffffffffffff" }, "variables": [ { "name": "_1", "nativeSrc": "612:2:84", "nodeType": "YulTypedName", "src": "612:2:84", "type": "" } ] }, { "body": { "nativeSrc": "663:16:84", "nodeType": "YulBlock", "src": "663:16:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "672:1:84", "nodeType": "YulLiteral", "src": "672:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "675:1:84", "nodeType": "YulLiteral", "src": "675:1:84", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "665:6:84", "nodeType": "YulIdentifier", "src": "665:6:84" }, "nativeSrc": "665:12:84", "nodeType": "YulFunctionCall", "src": "665:12:84" }, "nativeSrc": "665:12:84", "nodeType": "YulExpressionStatement", "src": "665:12:84" } ] }, "condition": { "arguments": [ { "name": "offset", "nativeSrc": "651:6:84", "nodeType": "YulIdentifier", "src": "651:6:84" }, { "name": "_1", "nativeSrc": "659:2:84", "nodeType": "YulIdentifier", "src": "659:2:84" } ], "functionName": { "name": "gt", "nativeSrc": "648:2:84", "nodeType": "YulIdentifier", "src": "648:2:84" }, "nativeSrc": "648:14:84", "nodeType": "YulFunctionCall", "src": "648:14:84" }, "nativeSrc": "645:34:84", "nodeType": "YulIf", "src": "645:34:84" }, { "nativeSrc": "688:84:84", "nodeType": "YulVariableDeclaration", "src": "688:84:84", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nativeSrc": "744:9:84", "nodeType": "YulIdentifier", "src": "744:9:84" }, { "name": "offset", "nativeSrc": "755:6:84", "nodeType": "YulIdentifier", "src": "755:6:84" } ], "functionName": { "name": "add", "nativeSrc": "740:3:84", "nodeType": "YulIdentifier", "src": "740:3:84" }, "nativeSrc": "740:22:84", "nodeType": "YulFunctionCall", "src": "740:22:84" }, { "name": "dataEnd", "nativeSrc": "764:7:84", "nodeType": "YulIdentifier", "src": "764:7:84" } ], "functionName": { "name": "abi_decode_bytes_calldata", "nativeSrc": "714:25:84", "nodeType": "YulIdentifier", "src": "714:25:84" }, "nativeSrc": "714:58:84", "nodeType": "YulFunctionCall", "src": "714:58:84" }, "variables": [ { "name": "value0_1", "nativeSrc": "692:8:84", "nodeType": "YulTypedName", "src": "692:8:84", "type": "" }, { "name": "value1_1", "nativeSrc": "702:8:84", "nodeType": "YulTypedName", "src": "702:8:84", "type": "" } ] }, { "nativeSrc": "781:18:84", "nodeType": "YulAssignment", "src": "781:18:84", "value": { "name": "value0_1", "nativeSrc": "791:8:84", "nodeType": "YulIdentifier", "src": "791:8:84" }, "variableNames": [ { "name": "value0", "nativeSrc": "781:6:84", "nodeType": "YulIdentifier", "src": "781:6:84" } ] }, { "nativeSrc": "808:18:84", "nodeType": "YulAssignment", "src": "808:18:84", "value": { "name": "value1_1", "nativeSrc": "818:8:84", "nodeType": "YulIdentifier", "src": "818:8:84" }, "variableNames": [ { "name": "value1", "nativeSrc": "808:6:84", "nodeType": "YulIdentifier", "src": "808:6:84" } ] }, { "nativeSrc": "835:48:84", "nodeType": "YulVariableDeclaration", "src": "835:48:84", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nativeSrc": "868:9:84", "nodeType": "YulIdentifier", "src": "868:9:84" }, { "kind": "number", "nativeSrc": "879:2:84", "nodeType": "YulLiteral", "src": "879:2:84", "type": "", "value": "32" } ], "functionName": { "name": "add", "nativeSrc": "864:3:84", "nodeType": "YulIdentifier", "src": "864:3:84" }, "nativeSrc": "864:18:84", "nodeType": "YulFunctionCall", "src": "864:18:84" } ], "functionName": { "name": "calldataload", "nativeSrc": "851:12:84", "nodeType": "YulIdentifier", "src": "851:12:84" }, "nativeSrc": "851:32:84", "nodeType": "YulFunctionCall", "src": "851:32:84" }, "variables": [ { "name": "offset_1", "nativeSrc": "839:8:84", "nodeType": "YulTypedName", "src": "839:8:84", "type": "" } ] }, { "body": { "nativeSrc": "912:16:84", "nodeType": "YulBlock", "src": "912:16:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "921:1:84", "nodeType": "YulLiteral", "src": "921:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "924:1:84", "nodeType": "YulLiteral", "src": "924:1:84", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "914:6:84",