witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
649 lines (648 loc) • 337 kB
JSON
{
"contractName": "TestBech32",
"abi": [
{
"inputs": [
{
"internalType": "bytes20",
"name": "witBytes20",
"type": "bytes20"
}
],
"name": "toBech32Mainnet",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes20",
"name": "witBytes20",
"type": "bytes20"
}
],
"name": "toBech32Testnet",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "witPkh",
"type": "string"
}
],
"name": "fromBech32Mainnet",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "witPkh",
"type": "string"
}
],
"name": "fromBech32Testnet",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "hexAddr",
"type": "string"
}
],
"name": "parseHexAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"witPkh\",\"type\":\"string\"}],\"name\":\"fromBech32Mainnet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"witPkh\",\"type\":\"string\"}],\"name\":\"fromBech32Testnet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"hexAddr\",\"type\":\"string\"}],\"name\":\"parseHexAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"witBytes20\",\"type\":\"bytes20\"}],\"name\":\"toBech32Mainnet\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"witBytes20\",\"type\":\"bytes20\"}],\"name\":\"toBech32Testnet\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/mockups/tests/TestBech32.sol\":\"TestBech32\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]},\"project:/contracts/mockups/tests/TestBech32.sol\":{\"keccak256\":\"0x083a0c20a5bffe75e62add06150073368557d0e6944060b3bae3b5b0a96a7842\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b243cf257bb4c0f69ac3c86ca3851cc4023755a5a0486892e5a4dc16f1b651b\",\"dweb:/ipfs/QmVqNCHfAFo1xJU1ibXgMJuAKSDtvye6GiuRGsvHPjqJv8\"]}},\"version\":1}",
"bytecode": "0x6080604052348015600e575f5ffd5b5061169a8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80630b983db0146100595780632edbcd7a146100895780634c94b89e1461009c578063c5c42167146100bc578063ded7d15d146100cf575b5f5ffd5b61006c610067366004611331565b6100e2565b6040516001600160a01b0390911681526020015b60405180910390f35b61006c610097366004611331565b61010e565b6100af6100aa3660046113e4565b610120565b6040516100809190611410565b61006c6100ca366004611331565b61014a565b6100af6100dd3660046113e4565b610171565b5f61010882604051806040016040528060038152602001621dda5d60ea1b81525061019c565b92915050565b5f61010861011b8361021a565b610305565b60606101088260601c604051806040016040528060038152602001621dda5d60ea1b815250610318565b5f61010882604051806040016040528060048152602001631d1dda5d60e21b81525061019c565b60606101088260601c604051806040016040528060048152602001631d1dda5d60e21b815250610318565b5f5f5f6101c9856040516020016101b3919061145c565b6040516020818303038152906040526001610358565b915091506101f6846040516020016101e1919061145c565b604051602081830303815290604052836106e9565b5f61020582600560085f610741565b905061021081610758565b9695505050505050565b6060600282518161022d5761022d611467565b0467ffffffffffffffff8111156102465761024661131d565b6040519080825280601f01601f191660200182016040528015610270576020820181803683370190505b5090505f5b81518110156102ff575f6102a48483600202815181106102975761029761147b565b016020015160f81c6107b2565b90505f6102c28584600202600101815181106102975761029761147b565b905080826010020160f81b8484815181106102df576102df61147b565b60200101906001600160f81b03191690815f1a9053505050600101610275565b50919050565b5f61030f82610876565b60601c92915050565b604051606083811b6bffffffffffffffffffffffff19166020830152906103519060340160405160208183030381529060405283610882565b9392505050565b6060805f605a855111156103b35760405162461bcd60e51b815260206004820152601d60248201527f4265636833323a20696e76616c696420737472696e67206c656e67746800000060448201526064015b60405180910390fd5b5f5b85518110156104ae575f8682815181106103d1576103d161147b565b016020015160f81c9050602181108015906103f05750607e8160ff1611155b6104315760405162461bcd60e51b81526020600482015260126024820152712132b1b419991d103bb937b7339031b430b960711b60448201526064016103aa565b60301960ff8216016104a5578215801561044c575060018210155b801561045c575086518260070111155b6104a15760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720706f73206f66203160501b60448201526064016103aa565b8192505b506001016103b5565b508067ffffffffffffffff8111156104c8576104c861131d565b6040519080825280601f01601f1916602001820160405280156104f2576020820181803683370190505b5092505f5b8181101561054c578581815181106105115761051161147b565b602001015160f81c60f81b84828151811061052e5761052e61147b565b60200101906001600160f81b03191690815f1a9053506001016104f7565b506001818651030367ffffffffffffffff81111561056c5761056c61131d565b604051908082528060200260200182016040528015610595578160200160208202803683370190505b5091505f5b8251811015610686575f6040518061012001604052806101008152602001611545610100913987848401600101815181106105d7576105d761147b565b0160200151815160f89190911c9081106105f3576105f361147b565b01602001516001600160f81b031990811691508190036106555760405162461bcd60e51b815260206004820152601c60248201527f4265636833323a2062797465206e6f7420696e20616c7068616265740000000060448201526064016103aa565b8060f81c84838151811061066b5761066b61147b565b60ff909216602092830291909101909101525060010161059a565b506106928383866108c5565b6106d75760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720636865636b73756d60501b60448201526064016103aa565b50805160051901815290939092509050565b808051906020012082805190602001201461073d5760405162461bcd60e51b8152602060048201526014602482015273084cac6d066647440d0e4e040dad2e6dac2e8c6d60631b60448201526064016103aa565b5050565b606061074f858585856109f0565b95945050505050565b5f81516014146107aa5760405162461bcd60e51b815260206004820152601b60248201527f4265636833323a20696e76616c69642064617461206c656e677468000000000060448201526064016103aa565b506014015190565b5f60308260ff16101580156107cb575060398260ff1611155b156107db576101086030836114a3565b60418260ff16101580156107f3575060468260ff1611155b1561080e576108036041836114a3565b61010890600a6114bc565b60618260ff1610158015610826575060668260ff1611155b15610836576108036061836114a3565b60405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103432bc1031b430b930b1ba32b960591b60448201526064016103aa565b5f610108826014610bbd565b60605f82604051602001610896919061145c565b60405160208183030381529060405290505f6108b785600860056001610c32565b905061074f82826001610cf9565b5f5f6108d085610f88565b90505f845182510167ffffffffffffffff8111156108f0576108f061131d565b604051908082528060200260200182016040528015610919578160200160208202803683370190505b5090505f5b8251811015610973578281815181106109395761093961147b565b602002602001015160ff168282815181106109565761095661147b565b63ffffffff9092166020928302919091019091015260010161091e565b505f5b85518110156109ce578581815181106109915761099161147b565b602002602001015160ff168284518301815181106109b1576109b161147b565b63ffffffff90921660209283029190910190910152600101610976565b508363ffffffff166109df82611083565b63ffffffff16149695505050505050565b60605f8080610a02600180881b6114d5565b90505f5b8851811015610af6575f898281518110610a2257610a2261147b565b6020908102919091010151905060ff8082168a1c1615610aa35760405162461bcd60e51b815260206004820152603660248201527f4265636833323a2076616c7565206d757374206265206e6f6e2d6e6567617469604482015275766520616e642066697420696e2066726f6d6269747360501b60648201526084016103aa565b93881b60ff85161793928801925b878410610aed576040519388900393610ad790879087871c861660f81b906020016114e8565b6040516020818303038152906040529550610ab1565b50600101610a06565b508415610b3e578115610b39578381610b0f84896114d5565b85901b1660f81b604051602001610b279291906114e8565b60405160208183030381529060405293505b610bb2565b86821080610b58575080610b5283886114d5565b84901b16155b610bb25760405162461bcd60e51b815260206004820152602560248201527f4265636833323a20696e76616c69642070616464696e67206f722076616c75656044820152642073697a6560d81b60648201526084016103aa565b505050949350505050565b5f60208260ff161115610bd257610bd261150c565b5f8260ff16845111610be5578351610bea565b8260ff165b90505f5b81811015610c2a5780600802858281518110610c0c57610c0c61147b565b01602001516001600160f81b031916901c9290921791600101610bee565b505092915050565b60605f855167ffffffffffffffff811115610c4f57610c4f61131d565b604051908082528060200260200182016040528015610c78578160200160208202803683370190505b5090505f5b81518163ffffffff161015610cec57868163ffffffff1681518110610ca457610ca461147b565b602001015160f81c60f81b60f81c828263ffffffff1681518110610cca57610cca61147b565b60ff90921660209283029190910190910152610ce581611520565b9050610c7d565b50610210818686866109f0565b60605f610d0785858561117d565b90505f815185518751010160010167ffffffffffffffff811115610d2d57610d2d61131d565b6040519080825280601f01601f191660200182016040528015610d57576020820181803683370190505b5090505f5b8651811015610db257868181518110610d7757610d7761147b565b602001015160f81c60f81b828281518110610d9457610d9461147b565b60200101906001600160f81b03191690815f1a905350600101610d5c565b50603160f81b81875181518110610dcb57610dcb61147b565b60200101906001600160f81b03191690815f1a90535085516001015f5b8651811015610eac575f878281518110610e0457610e0461147b565b01602090810151604080518082019091528281525f5160206116455f395f51905f529083015260f81c9150811015610ea3576040518060400160405280602081526020015f5160206116455f395f51905f528152508160ff1681518110610e6d57610e6d61147b565b602001015160f81c60f81b8484840181518110610e8c57610e8c61147b565b60200101906001600160f81b03191690815f1a9053505b50600101610de8565b508551015f5b8351811015610f7c575f848281518110610ece57610ece61147b565b602002602001015190506040518060400160405280602081526020015f5160206116455f395f51905f52815250518160ff161015610f73576040518060400160405280602081526020015f5160206116455f395f51905f528152508160ff1681518110610f3d57610f3d61147b565b602001015160f81c60f81b8484840181518110610f5c57610f5c61147b565b60200101906001600160f81b03191690815f1a9053505b50600101610eb2565b50909695505050505050565b6060815182510160010167ffffffffffffffff811115610faa57610faa61131d565b604051908082528060200260200182016040528015610fd3578160200160208202803683370190505b5090505f5b82518110156102ff576005838281518110610ff557610ff561147b565b602001015160f81c60f81b60f81c60ff16901c82828151811061101a5761101a61147b565b602002602001019060ff16908160ff16815250508281815181106110405761104061147b565b602001015160f81c60f81b60f81c601f168284518301600101815181106110695761106961147b565b60ff90921660209283029190910190910152600101610fd8565b6040805160a081018252633b6a57b281526326508e6d6020820152631ea119fa91810191909152633d4233dd6060820152632a1462b360808201525f90600190825b84518163ffffffff161015611174575f60198463ffffffff16901c9050858263ffffffff16815181106110fa576110fa61147b565b60200260200101516005856301ffffff1663ffffffff16901b1893505f5f90505b60058163ffffffff16101561116a57600163ffffffff8381169083161c8116900361116257838163ffffffff16600581106111585761115861147b565b6020020151851894505b60010161111b565b50506001016110c5565b50909392505050565b60605f61118985610f88565b90505f845182510160060167ffffffffffffffff8111156111ac576111ac61131d565b6040519080825280602002602001820160405280156111d5578160200160208202803683370190505b5090505f5b855183510181101561129857825181101561123d578281815181106112015761120161147b565b602002602001015160ff1682828151811061121e5761121e61147b565b602002602001019063ffffffff16908163ffffffff1681525050611290565b8583518203815181106112525761125261147b565b602001015160f81c60f81b60f81c60ff168282815181106112755761127561147b565b602002602001019063ffffffff16908163ffffffff16815250505b6001016111da565b5060408051600680825260e08201909252906020820160c0803683370190505092505f846112c583611083565b1890505f5b600681101561131257806005036005028263ffffffff16901c601f168582815181106112f8576112f861147b565b60ff909216602092830291909101909101526001016112ca565b505050509392505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611341575f5ffd5b813567ffffffffffffffff811115611357575f5ffd5b8201601f81018413611367575f5ffd5b803567ffffffffffffffff8111156113815761138161131d565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156113b0576113b061131d565b6040528181528282016020018610156113c7575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f602082840312156113f4575f5ffd5b81356bffffffffffffffffffffffff1981168114610351575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f81518060208401855e5f93019283525090919050565b5f6103518284611445565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156101085761010861148f565b60ff81811683821601908111156101085761010861148f565b818103818111156101085761010861148f565b5f6114f38285611445565b6001600160f81b03199390931683525050600101919050565b634e487b7160e01b5f52600160045260245ffd5b5f63ffffffff821663ffffffff810361153b5761153b61148f565b6001019291505056feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff71707a7279397838676632747664773073336a6e35346b686365366d7561376ca2646970667358221220e3c35e595d0f1fd3a41a6fa349ae5988a609566257f07ad8cf093f740454a44664736f6c634300081e0033",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80630b983db0146100595780632edbcd7a146100895780634c94b89e1461009c578063c5c42167146100bc578063ded7d15d146100cf575b5f5ffd5b61006c610067366004611331565b6100e2565b6040516001600160a01b0390911681526020015b60405180910390f35b61006c610097366004611331565b61010e565b6100af6100aa3660046113e4565b610120565b6040516100809190611410565b61006c6100ca366004611331565b61014a565b6100af6100dd3660046113e4565b610171565b5f61010882604051806040016040528060038152602001621dda5d60ea1b81525061019c565b92915050565b5f61010861011b8361021a565b610305565b60606101088260601c604051806040016040528060038152602001621dda5d60ea1b815250610318565b5f61010882604051806040016040528060048152602001631d1dda5d60e21b81525061019c565b60606101088260601c604051806040016040528060048152602001631d1dda5d60e21b815250610318565b5f5f5f6101c9856040516020016101b3919061145c565b6040516020818303038152906040526001610358565b915091506101f6846040516020016101e1919061145c565b604051602081830303815290604052836106e9565b5f61020582600560085f610741565b905061021081610758565b9695505050505050565b6060600282518161022d5761022d611467565b0467ffffffffffffffff8111156102465761024661131d565b6040519080825280601f01601f191660200182016040528015610270576020820181803683370190505b5090505f5b81518110156102ff575f6102a48483600202815181106102975761029761147b565b016020015160f81c6107b2565b90505f6102c28584600202600101815181106102975761029761147b565b905080826010020160f81b8484815181106102df576102df61147b565b60200101906001600160f81b03191690815f1a9053505050600101610275565b50919050565b5f61030f82610876565b60601c92915050565b604051606083811b6bffffffffffffffffffffffff19166020830152906103519060340160405160208183030381529060405283610882565b9392505050565b6060805f605a855111156103b35760405162461bcd60e51b815260206004820152601d60248201527f4265636833323a20696e76616c696420737472696e67206c656e67746800000060448201526064015b60405180910390fd5b5f5b85518110156104ae575f8682815181106103d1576103d161147b565b016020015160f81c9050602181108015906103f05750607e8160ff1611155b6104315760405162461bcd60e51b81526020600482015260126024820152712132b1b419991d103bb937b7339031b430b960711b60448201526064016103aa565b60301960ff8216016104a5578215801561044c575060018210155b801561045c575086518260070111155b6104a15760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720706f73206f66203160501b60448201526064016103aa565b8192505b506001016103b5565b508067ffffffffffffffff8111156104c8576104c861131d565b6040519080825280601f01601f1916602001820160405280156104f2576020820181803683370190505b5092505f5b8181101561054c578581815181106105115761051161147b565b602001015160f81c60f81b84828151811061052e5761052e61147b565b60200101906001600160f81b03191690815f1a9053506001016104f7565b506001818651030367ffffffffffffffff81111561056c5761056c61131d565b604051908082528060200260200182016040528015610595578160200160208202803683370190505b5091505f5b8251811015610686575f6040518061012001604052806101008152602001611545610100913987848401600101815181106105d7576105d761147b565b0160200151815160f89190911c9081106105f3576105f361147b565b01602001516001600160f81b031990811691508190036106555760405162461bcd60e51b815260206004820152601c60248201527f4265636833323a2062797465206e6f7420696e20616c7068616265740000000060448201526064016103aa565b8060f81c84838151811061066b5761066b61147b565b60ff909216602092830291909101909101525060010161059a565b506106928383866108c5565b6106d75760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720636865636b73756d60501b60448201526064016103aa565b50805160051901815290939092509050565b808051906020012082805190602001201461073d5760405162461bcd60e51b8152602060048201526014602482015273084cac6d066647440d0e4e040dad2e6dac2e8c6d60631b60448201526064016103aa565b5050565b606061074f858585856109f0565b95945050505050565b5f81516014146107aa5760405162461bcd60e51b815260206004820152601b60248201527f4265636833323a20696e76616c69642064617461206c656e677468000000000060448201526064016103aa565b506014015190565b5f60308260ff16101580156107cb575060398260ff1611155b156107db576101086030836114a3565b60418260ff16101580156107f3575060468260ff1611155b1561080e576108036041836114a3565b61010890600a6114bc565b60618260ff1610158015610826575060668260ff1611155b15610836576108036061836114a3565b60405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103432bc1031b430b930b1ba32b960591b60448201526064016103aa565b5f610108826014610bbd565b60605f82604051602001610896919061145c565b60405160208183030381529060405290505f6108b785600860056001610c32565b905061074f82826001610cf9565b5f5f6108d085610f88565b90505f845182510167ffffffffffffffff8111156108f0576108f061131d565b604051908082528060200260200182016040528015610919578160200160208202803683370190505b5090505f5b8251811015610973578281815181106109395761093961147b565b602002602001015160ff168282815181106109565761095661147b565b63ffffffff9092166020928302919091019091015260010161091e565b505f5b85518110156109ce578581815181106109915761099161147b565b602002602001015160ff168284518301815181106109b1576109b161147b565b63ffffffff90921660209283029190910190910152600101610976565b508363ffffffff166109df82611083565b63ffffffff16149695505050505050565b60605f8080610a02600180881b6114d5565b90505f5b8851811015610af6575f898281518110610a2257610a2261147b565b6020908102919091010151905060ff8082168a1c1615610aa35760405162461bcd60e51b815260206004820152603660248201527f4265636833323a2076616c7565206d757374206265206e6f6e2d6e6567617469604482015275766520616e642066697420696e2066726f6d6269747360501b60648201526084016103aa565b93881b60ff85161793928801925b878410610aed576040519388900393610ad790879087871c861660f81b906020016114e8565b6040516020818303038152906040529550610ab1565b50600101610a06565b508415610b3e578115610b39578381610b0f84896114d5565b85901b1660f81b604051602001610b279291906114e8565b60405160208183030381529060405293505b610bb2565b86821080610b58575080610b5283886114d5565b84901b16155b610bb25760405162461bcd60e51b815260206004820152602560248201527f4265636833323a20696e76616c69642070616464696e67206f722076616c75656044820152642073697a6560d81b60648201526084016103aa565b505050949350505050565b5f60208260ff161115610bd257610bd261150c565b5f8260ff16845111610be5578351610bea565b8260ff165b90505f5b81811015610c2a5780600802858281518110610c0c57610c0c61147b565b01602001516001600160f81b031916901c9290921791600101610bee565b505092915050565b60605f855167ffffffffffffffff811115610c4f57610c4f61131d565b604051908082528060200260200182016040528015610c78578160200160208202803683370190505b5090505f5b81518163ffffffff161015610cec57868163ffffffff1681518110610ca457610ca461147b565b602001015160f81c60f81b60f81c828263ffffffff1681518110610cca57610cca61147b565b60ff90921660209283029190910190910152610ce581611520565b9050610c7d565b50610210818686866109f0565b60605f610d0785858561117d565b90505f815185518751010160010167ffffffffffffffff811115610d2d57610d2d61131d565b6040519080825280601f01601f191660200182016040528015610d57576020820181803683370190505b5090505f5b8651811015610db257868181518110610d7757610d7761147b565b602001015160f81c60f81b828281518110610d9457610d9461147b565b60200101906001600160f81b03191690815f1a905350600101610d5c565b50603160f81b81875181518110610dcb57610dcb61147b565b60200101906001600160f81b03191690815f1a90535085516001015f5b8651811015610eac575f878281518110610e0457610e0461147b565b01602090810151604080518082019091528281525f5160206116455f395f51905f529083015260f81c9150811015610ea3576040518060400160405280602081526020015f5160206116455f395f51905f528152508160ff1681518110610e6d57610e6d61147b565b602001015160f81c60f81b8484840181518110610e8c57610e8c61147b565b60200101906001600160f81b03191690815f1a9053505b50600101610de8565b508551015f5b8351811015610f7c575f848281518110610ece57610ece61147b565b602002602001015190506040518060400160405280602081526020015f5160206116455f395f51905f52815250518160ff161015610f73576040518060400160405280602081526020015f5160206116455f395f51905f528152508160ff1681518110610f3d57610f3d61147b565b602001015160f81c60f81b8484840181518110610f5c57610f5c61147b565b60200101906001600160f81b03191690815f1a9053505b50600101610eb2565b50909695505050505050565b6060815182510160010167ffffffffffffffff811115610faa57610faa61131d565b604051908082528060200260200182016040528015610fd3578160200160208202803683370190505b5090505f5b82518110156102ff576005838281518110610ff557610ff561147b565b602001015160f81c60f81b60f81c60ff16901c82828151811061101a5761101a61147b565b602002602001019060ff16908160ff16815250508281815181106110405761104061147b565b602001015160f81c60f81b60f81c601f168284518301600101815181106110695761106961147b565b60ff90921660209283029190910190910152600101610fd8565b6040805160a081018252633b6a57b281526326508e6d6020820152631ea119fa91810191909152633d4233dd6060820152632a1462b360808201525f90600190825b84518163ffffffff161015611174575f60198463ffffffff16901c9050858263ffffffff16815181106110fa576110fa61147b565b60200260200101516005856301ffffff1663ffffffff16901b1893505f5f90505b60058163ffffffff16101561116a57600163ffffffff8381169083161c8116900361116257838163ffffffff16600581106111585761115861147b565b6020020151851894505b60010161111b565b50506001016110c5565b50909392505050565b60605f61118985610f88565b90505f845182510160060167ffffffffffffffff8111156111ac576111ac61131d565b6040519080825280602002602001820160405280156111d5578160200160208202803683370190505b5090505f5b855183510181101561129857825181101561123d578281815181106112015761120161147b565b602002602001015160ff1682828151811061121e5761121e61147b565b602002602001019063ffffffff16908163ffffffff1681525050611290565b8583518203815181106112525761125261147b565b602001015160f81c60f81b60f81c60ff168282815181106112755761127561147b565b602002602001019063ffffffff16908163ffffffff16815250505b6001016111da565b5060408051600680825260e08201909252906020820160c0803683370190505092505f846112c583611083565b1890505f5b600681101561131257806005036005028263ffffffff16901c601f168582815181106112f8576112f861147b565b60ff909216602092830291909101909101526001016112ca565b505050509392505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611341575f5ffd5b813567ffffffffffffffff811115611357575f5ffd5b8201601f81018413611367575f5ffd5b803567ffffffffffffffff8111156113815761138161131d565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156113b0576113b061131d565b6040528181528282016020018610156113c7575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f602082840312156113f4575f5ffd5b81356bffffffffffffffffffffffff1981168114610351575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f81518060208401855e5f93019283525090919050565b5f6103518284611445565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156101085761010861148f565b60ff81811683821601908111156101085761010861148f565b818103818111156101085761010861148f565b5f6114f38285611445565b6001600160f81b03199390931683525050600101919050565b634e487b7160e01b5f52600160045260245ffd5b5f63ffffffff821663ffffffff810361153b5761153b61148f565b6001019291505056feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff71707a7279397838676632747664773073336a6e35346b686365366d7561376ca2646970667358221220e3c35e595d0f1fd3a41a6fa349ae5988a609566257f07ad8cf093f740454a44664736f6c634300081e0033",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [
{
"ast": {
"nativeSrc": "0:7792:136",
"nodeType": "YulBlock",
"src": "0:7792:136",
"statements": [
{
"nativeSrc": "6:3:136",
"nodeType": "YulBlock",
"src": "6:3:136",
"statements": []
},
{
"body": {
"nativeSrc": "46:95:136",
"nodeType": "YulBlock",
"src": "46:95:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "63:1:136",
"nodeType": "YulLiteral",
"src": "63:1:136",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "70:3:136",
"nodeType": "YulLiteral",
"src": "70:3:136",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "75:10:136",
"nodeType": "YulLiteral",
"src": "75:10:136",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "66:3:136",
"nodeType": "YulIdentifier",
"src": "66:3:136"
},
"nativeSrc": "66:20:136",
"nodeType": "YulFunctionCall",
"src": "66:20:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "56:6:136",
"nodeType": "YulIdentifier",
"src": "56:6:136"
},
"nativeSrc": "56:31:136",
"nodeType": "YulFunctionCall",
"src": "56:31:136"
},
"nativeSrc": "56:31:136",
"nodeType": "YulExpressionStatement",
"src": "56:31:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "103:1:136",
"nodeType": "YulLiteral",
"src": "103:1:136",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "106:4:136",
"nodeType": "YulLiteral",
"src": "106:4:136",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "96:6:136",
"nodeType": "YulIdentifier",
"src": "96:6:136"
},
"nativeSrc": "96:15:136",
"nodeType": "YulFunctionCall",
"src": "96:15:136"
},
"nativeSrc": "96:15:136",
"nodeType": "YulExpressionStatement",
"src": "96:15:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "127:1:136",
"nodeType": "YulLiteral",
"src": "127:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "130:4:136",
"nodeType": "YulLiteral",
"src": "130:4:136",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "120:6:136",
"nodeType": "YulIdentifier",
"src": "120:6:136"
},
"nativeSrc": "120:15:136",
"nodeType": "YulFunctionCall",
"src": "120:15:136"
},
"nativeSrc": "120:15:136",
"nodeType": "YulExpressionStatement",
"src": "120:15:136"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "14:127:136",
"nodeType": "YulFunctionDefinition",
"src": "14:127:136"
},
{
"body": {
"nativeSrc": "226:865:136",
"nodeType": "YulBlock",
"src": "226:865:136",
"statements": [
{
"body": {
"nativeSrc": "272:16:136",
"nodeType": "YulBlock",
"src": "272:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "281:1:136",
"nodeType": "YulLiteral",
"src": "281:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "284:1:136",
"nodeType": "YulLiteral",
"src": "284:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "274:6:136",
"nodeType": "YulIdentifier",
"src": "274:6:136"
},
"nativeSrc": "274:12:136",
"nodeType": "YulFunctionCall",
"src": "274:12:136"
},
"nativeSrc": "274:12:136",
"nodeType": "YulExpressionStatement",
"src": "274:12:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "247:7:136",
"nodeType": "YulIdentifier",
"src": "247:7:136"
},
{
"name": "headStart",
"nativeSrc": "256:9:136",
"nodeType": "YulIdentifier",
"src": "256:9:136"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "243:3:136",
"nodeType": "YulIdentifier",
"src": "243:3:136"
},
"nativeSrc": "243:23:136",
"nodeType": "YulFunctionCall",
"src": "243:23:136"
},
{
"kind": "number",
"nativeSrc": "268:2:136",
"nodeType": "YulLiteral",
"src": "268:2:136",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "239:3:136",
"nodeType": "YulIdentifier",
"src": "239:3:136"
},
"nativeSrc": "239:32:136",
"nodeType": "YulFunctionCall",
"src": "239:32:136"
},
"nativeSrc": "236:52:136",
"nodeType": "YulIf",
"src": "236:52:136"
},
{
"nativeSrc": "297:37:136",
"nodeType": "YulVariableDeclaration",
"src": "297:37:136",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "324:9:136",
"nodeType": "YulIdentifier",
"src": "324:9:136"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "311:12:136",
"nodeType": "YulIdentifier",
"src": "311:12:136"
},
"nativeSrc": "311:23:136",
"nodeType": "YulFunctionCall",
"src": "311:23:136"
},
"variables": [
{
"name": "offset",
"nativeSrc": "301:6:136",
"nodeType": "YulTypedName",
"src": "301:6:136",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "377:16:136",
"nodeType": "YulBlock",
"src": "377:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "386:1:136",
"nodeType": "YulLiteral",
"src": "386:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "389:1:136",
"nodeType": "YulLiteral",
"src": "389:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "379:6:136",
"nodeType": "YulIdentifier",
"src": "379:6:136"
},
"nativeSrc": "379:12:136",
"nodeType": "YulFunctionCall",
"src": "379:12:136"
},
"nativeSrc": "379:12:136",
"nodeType": "YulExpressionStatement",
"src": "379:12:136"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "349:6:136",
"nodeType": "YulIdentifier",
"src": "349:6:136"
},
{
"kind": "number",
"nativeSrc": "357:18:136",
"nodeType": "YulLiteral",
"src": "357:18:136",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "346:2:136",
"nodeType": "YulIdentifier",
"src": "346:2:136"
},
"nativeSrc": "346:30:136",
"nodeType": "YulFunctionCall",
"src": "346:30:136"
},
"nativeSrc": "343:50:136",
"nodeType": "YulIf",
"src": "343:50:136"
},
{
"nativeSrc": "402:32:136",
"nodeType": "YulVariableDeclaration",
"src": "402:32:136",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "416:9:136",
"nodeType": "YulIdentifier",
"src": "416:9:136"
},
{
"name": "offset",
"nativeSrc": "427:6:136",
"nodeType": "YulIdentifier",
"src": "427:6:136"
}
],
"functionName": {
"name": "add",
"nativeSrc": "412:3:136",
"nodeType": "YulIdentifier",
"src": "412:3:136"
},
"nativeSrc": "412:22:136",
"nodeType": "YulFunctionCall",
"src": "412:22:136"
},
"variables": [
{
"name": "_1",
"nativeSrc": "406:2:136",
"nodeType": "YulTypedName",
"src": "406:2:136",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "482:16:136",
"nodeType": "YulBlock",
"src": "482:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "491:1:136",
"nodeType": "YulLiteral",
"src": "491:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "494:1:136",
"nodeType": "YulLiteral",
"src": "494:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "484:6:136",
"nodeType": "YulIdentifier",
"src": "484:6:136"
},
"nativeSrc": "484:12:136",
"nodeType": "YulFunctionCall",
"src": "484:12:136"
},
"nativeSrc": "484:12:136",
"nodeType": "YulExpressionStatement",
"src": "484:12:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_1",
"nativeSrc": "461:2:136",
"nodeType": "YulIdentifier",
"src": "461:2:136"
},
{
"kind": "number",
"nativeSrc": "465:4:136",
"nodeType": "YulLiteral",
"src": "465:4:136",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "457:3:136",
"nodeType": "YulIdentifier",
"src": "457:3:136"
},
"nativeSrc": "457:13:136",
"nodeType": "YulFunctionCall",
"src": "457:13:136"
},
{
"name": "dataEnd",
"nativeSrc": "472:7:136",
"nodeType": "YulIdentifier",
"src": "472:7:136"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "453:3:136",
"nodeType": "YulIdentifier",
"src": "453:3:136"
},
"nativeSrc": "453:27:136",
"nodeType": "YulFunctionCall",
"src": "453:27:136"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "446:6:136",
"nodeType": "YulIdentifier",
"src": "446:6:136"
},
"nativeSrc": "446:35:136",
"nodeType": "YulFunctionCall",
"src": "446:35:136"
},
"nativeSrc": "443:55:136",
"nodeType": "YulIf",
"src": "443:55:136"
},
{
"nativeSrc": "507:30:136",
"nodeType": "YulVariableDeclaration",
"src": "507:30:136",
"value": {
"arguments": [
{
"name": "_1",
"nativeSrc": "534:2:136",
"nodeType": "YulIdentifier",
"src": "534:2:136"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "521:12:136",
"nodeType": "YulIdentifier",
"src": "521:12:136"
},
"nativeSrc": "521:16:136",
"nodeType": "YulFunctionCall",
"src": "521:16:136"
},
"variables": [
{
"name": "length",
"nativeSrc": "511:6:136",
"nodeType": "YulTypedName",
"src": "511:6:136",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "580:22:136",
"nodeType": "YulBlock",
"src": "580:22:136",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "582:16:136",
"nodeType": "YulIdentifier",
"src": "582:16:136"