diff --git a/.env.contracts.example b/.env.contracts.example index 5dfec790d..78bdcfd45 100644 --- a/.env.contracts.example +++ b/.env.contracts.example @@ -31,6 +31,7 @@ export FEE_CONTRACT_ADDRESS= # The etherscan API key is needed to verify contracts on etherscan. export ETHERSCAN_API_KEY= export SOLC_VERSION= +export ARBISCAN_API_KEY= # foundry scripts export DEPLOYER_PRIVATE_KEY= #include the 0x prefix diff --git a/.vscode/ltex.dictionary.en-US.txt b/.vscode/ltex.dictionary.en-US.txt deleted file mode 100644 index 12589cd69..000000000 --- a/.vscode/ltex.dictionary.en-US.txt +++ /dev/null @@ -1,4 +0,0 @@ -Multisig -OpenZeppelin -multisig -Metamask diff --git a/contract-bindings/artifacts/LightClientArbitrum_bytecode.json b/contract-bindings/artifacts/LightClientArbitrum_bytecode.json new file mode 100644 index 000000000..8f03a3e2f --- /dev/null +++ b/contract-bindings/artifacts/LightClientArbitrum_bytecode.json @@ -0,0 +1 @@ +"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a7e62000104600039600081816111480152818161117101526112f00152612a7e6000f3fe60806040526004361061014b5760003560e01c8063826e41fc116100b6578063ad3cb1cc1161006f578063ad3cb1cc14610488578063c23b9e9e146104c6578063d24d933d146104ff578063e03033011461052f578063f2fde38b1461054f578063f9e50d191461056f57600080fd5b8063826e41fc1461034c5780638584d23f146103785780638da5cb5b146103b557806396c1ca61146103f25780639baa3cc9146104125780639fdb54a71461043257600080fd5b8063378ec23b11610108578063378ec23b14610294578063426d3194146102b75780634f1ef286146102fa57806352d1902d1461030d57806369cc6a0414610322578063715018a61461033757600080fd5b8063013fa5fc1461015057806302b592f3146101725780630d8e6e2c146101d05780632063d4f7146101fd5780632f79889d1461021d578063313df7b11461025c575b600080fd5b34801561015c57600080fd5b5061017061016b366004612004565b610584565b005b34801561017e57600080fd5b5061019261018d36600461201f565b610637565b6040516101c794939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101dc57600080fd5b506040805160018152600060208201819052918101919091526060016101c7565b34801561020957600080fd5b50610170610218366004612173565b610682565b34801561022957600080fd5b5060085461024490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101c7565b34801561026857600080fd5b5060085461027c906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b3480156102a057600080fd5b506102a96107de565b6040519081526020016101c7565b3480156102c357600080fd5b506000546001546002546003546102da9392919084565b6040805194855260208501939093529183015260608201526080016101c7565b610170610308366004612327565b610848565b34801561031957600080fd5b506102a9610867565b34801561032e57600080fd5b50610170610884565b34801561034357600080fd5b506101706108f3565b34801561035857600080fd5b506008546001600160a01b031615155b60405190151581526020016101c7565b34801561038457600080fd5b5061039861039336600461201f565b610905565b604080519283526001600160401b039091166020830152016101c7565b3480156103c157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661027c565b3480156103fe57600080fd5b5061017061040d3660046123e0565b610a38565b34801561041e57600080fd5b5061017061042d3660046123fb565b610ac1565b34801561043e57600080fd5b50600654600754610462916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101c7565b34801561049457600080fd5b506104b9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101c791906124cc565b3480156104d257600080fd5b506008546104ea90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101c7565b34801561050b57600080fd5b50600454600554610462916001600160401b0380821692600160401b909204169083565b34801561053b57600080fd5b5061036861054a3660046124ff565b610be5565b34801561055b57600080fd5b5061017061056a366004612004565b610d4b565b34801561057b57600080fd5b506009546102a9565b61058c610d8e565b6001600160a01b0381166105b35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105e25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061064757600080fd5b6000918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6008546001600160a01b0316151580156106a757506008546001600160a01b03163314155b156106c5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b0391821691161115806106fe575060065460208301516001600160401b03600160401b9092048216911611155b1561071c5760405163051c46ef60e01b815260040160405180910390fd5b6107298260400151610de9565b6107338282610e59565b81516006805460208501516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604082015160075561078161077a6107de565b4284610f51565b81602001516001600160401b031682600001516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107d291815260200190565b60405180910390a35050565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190612521565b905090565b61085061113d565b610859826111e2565b6108638282611223565b5050565b60006108716112e5565b50600080516020612a5283398151915290565b61088c610d8e565b6008546001600160a01b0316156108d857600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108fb610d8e565b6108f1600061132e565b6009805460009182919061091a600183612550565b8154811061092a5761092a612563565b6000918252602090912060029091020154600160801b90046001600160401b031684111561096b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a3157846009828154811061099b5761099b612563565b6000918252602090912060029091020154600160801b90046001600160401b031610610a2957600981815481106109d4576109d4612563565b906000526020600020906002020160010154600982815481106109f9576109f9612563565b906000526020600020906002020160000160109054906101000a90046001600160401b0316935093505050915091565b60010161097f565b5050915091565b610a40610d8e565b610e108163ffffffff161080610a5f57506301e133808163ffffffff16115b80610a7d575060085463ffffffff600160a01b909104811690821611155b15610a9b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610b065750825b90506000826001600160401b03166001148015610b225750303b155b905081158015610b30575080155b15610b4e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b7857845460ff60401b1916600160401b1785555b610b818661139f565b610b896113b0565b610b948989896113b8565b8315610bda57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600954600090610bf36107de565b841180610bfe575080155b80610c495750600854600980549091600160c01b90046001600160401b0316908110610c2c57610c2c612563565b60009182526020909120600290910201546001600160401b031684105b15610c675760405163b0b4387760e01b815260040160405180910390fd5b60008080610c76600185612550565b90505b81610d1457600854600160c01b90046001600160401b03168110610d14578660098281548110610cab57610cab612563565b60009182526020909120600290910201546001600160401b031611610d02576001915060098181548110610ce157610ce1612563565b60009182526020909120600290910201546001600160401b03169250610d14565b80610d0c81612579565b915050610c79565b81610d325760405163b0b4387760e01b815260040160405180910390fd5b85610d3d8489612550565b119450505050505b92915050565b610d53610d8e565b6001600160a01b038116610d8257604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610d8b8161132e565b50565b33610dc07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108f15760405163118cdaa760e01b8152336004820152602401610d79565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108635760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d79565b6000610e636114e5565b9050610e6d611d3d565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a083015260005460c08301525163ce537a7760e01b815273__$5c5c07cf4f55be9472c2b47d897172e765$__9063ce537a7790610eed90859085908890600401612797565b602060405180830381865af4158015610f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2e91906129c6565b610f4b576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590610fc7575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110610f9157610f91612563565b6000918252602090912060029091020154610fbc90600160401b90046001600160401b0316846129e8565b6001600160401b0316115b1561105b57600854600980549091600160c01b90046001600160401b0316908110610ff457610ff4612563565b60009182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861103583612a0f565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b0394851681529284166020808501918252830151851684830190815292909101516060840190815260098054600181018255600091909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806111c457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111b8600080516020612a52833981519152546001600160a01b031690565b6001600160a01b031614155b156108f15760405163703e46dd60e11b815260040160405180910390fd5b6111ea610d8e565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161062c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561127d575060408051601f3d908101601f1916820190925261127a91810190612521565b60015b6112a557604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d79565b600080516020612a5283398151915281146112d657604051632a87526960e21b815260048101829052602401610d79565b6112e08383611b14565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108f15760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6113a7611b6a565b610d8b81611bb3565b6108f1611b6a565b82516001600160401b03161515806113dc575060208301516001600160401b031615155b806113e957506020820151155b806113f657506040820151155b8061140357506060820151155b8061140d57508151155b8061141f5750610e108163ffffffff16105b8061143357506301e133808163ffffffff16115b15611451576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b03199384169190951690811785179093556040968701516005819055865160005590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6114ed611d5b565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611b1d82611bbb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b62576112e08282611c20565b610863611c96565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108f157604051631afcd79f60e31b815260040160405180910390fd5b610d53611b6a565b806001600160a01b03163b600003611bf157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d79565b600080516020612a5283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c3d9190612a35565b600060405180830381855af49150503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b5091509150611c8d858383611cb5565b95945050505050565b34156108f15760405163b398979f60e01b815260040160405180910390fd5b606082611cca57611cc582611d14565b611d0d565b8151158015611ce157506001600160a01b0384163b155b15611d0a57604051639996b31560e01b81526001600160a01b0385166004820152602401610d79565b50805b9392505050565b805115611d245780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060e001604052806007906020820280368337509192915050565b604051806102c001604052806000815260200160008152602001611d92604051806040016040528060008152602001600081525090565b8152602001611db4604051806040016040528060008152602001600081525090565b8152602001611dd6604051806040016040528060008152602001600081525090565b8152602001611df8604051806040016040528060008152602001600081525090565b8152602001611e1a604051806040016040528060008152602001600081525090565b8152602001611e3c604051806040016040528060008152602001600081525090565b8152602001611e5e604051806040016040528060008152602001600081525090565b8152602001611e80604051806040016040528060008152602001600081525090565b8152602001611ea2604051806040016040528060008152602001600081525090565b8152602001611ec4604051806040016040528060008152602001600081525090565b8152602001611ee6604051806040016040528060008152602001600081525090565b8152602001611f08604051806040016040528060008152602001600081525090565b8152602001611f2a604051806040016040528060008152602001600081525090565b8152602001611f4c604051806040016040528060008152602001600081525090565b8152602001611f6e604051806040016040528060008152602001600081525090565b8152602001611f90604051806040016040528060008152602001600081525090565b8152602001611fb2604051806040016040528060008152602001600081525090565b8152602001611fd4604051806040016040528060008152602001600081525090565b815260006020820181905260409091015290565b80356001600160a01b0381168114611fff57600080fd5b919050565b60006020828403121561201657600080fd5b611d0d82611fe8565b60006020828403121561203157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b038111828210171561207157612071612038565b60405290565b604051601f8201601f191681016001600160401b038111828210171561209f5761209f612038565b604052919050565b80356001600160401b0381168114611fff57600080fd5b6000606082840312156120d057600080fd5b604051606081018181106001600160401b03821117156120f2576120f2612038565b604052905080612101836120a7565b815261210f602084016120a7565b6020820152604083013560408201525092915050565b60006040828403121561213757600080fd5b604051604081018181106001600160401b038211171561215957612159612038565b604052823581526020928301359281019290925250919050565b6000808284036104e081121561218857600080fd5b61219285856120be565b925061048080605f19830112156121a857600080fd5b6121b061204e565b91506121bf8660608701612125565b82526121ce8660a08701612125565b60208301526121e08660e08701612125565b60408301526101206121f487828801612125565b606084015261016061220888828901612125565b60808501526101a061221c89828a01612125565b60a08601526101e06122308a828b01612125565b60c08701526102206122448b828c01612125565b60e08801526102606122588c828d01612125565b6101008901526102a061226d8d828e01612125565b878a015261227f8d6102e08e01612125565b6101408a01526122938d6103208e01612125565b868a01526122a58d6103608e01612125565b6101808a01526103a08c0135948901949094526103c08b01356101c08901526103e08b0135928801929092526104008a01356102008801526104208a013590870152610440890135610240870152610460890135908601529287013561028085015250506104a0850135908201526104c0909301356102c08401525092909150565b6000806040838503121561233a57600080fd5b61234383611fe8565b91506020808401356001600160401b038082111561236057600080fd5b818601915086601f83011261237457600080fd5b81358181111561238657612386612038565b612398601f8201601f19168501612077565b915080825287848285010111156123ae57600080fd5b80848401858401376000848284010152508093505050509250929050565b803563ffffffff81168114611fff57600080fd5b6000602082840312156123f257600080fd5b611d0d826123cc565b60008060008084860361012081121561241357600080fd5b61241d87876120be565b94506080605f198201121561243157600080fd5b50604051608081018181106001600160401b038211171561245457612454612038565b8060405250606086013581526080860135602082015260a0860135604082015260c086013560608201528093505061248e60e086016123cc565b915061249d6101008601611fe8565b905092959194509250565b60005b838110156124c35781810151838201526020016124ab565b50506000910152565b60208152600082518060208401526124eb8160408501602087016124a8565b601f01601f19169190910160400192915050565b6000806040838503121561251257600080fd5b50508035926020909101359150565b60006020828403121561253357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d4557610d4561253a565b634e487b7160e01b600052603260045260246000fd5b6000816125885761258861253a565b506000190190565b8060005b6007811015610f4b578151845260209384019390910190600101612594565b6125c882825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e084015250608081015161010061262b8185018380518252602090810151910152565b60a0830151915061014061264b8186018480518252602090810151910152565b60c0840151925061018061266b8187018580518252602090810151910152565b60e085015193506101c061268b8188018680518252602090810151910152565b928501519350610200926126ab8785018680518252602090810151910152565b61012086015194506102406126cc8189018780518252602090810151910152565b928601519450610280926126ec8885018780518252602090810151910152565b61016087015195506102c061270d818a018880518252602090810151910152565b9287015180516103008a0152602001516103208901526101a0870151610340890152908601516103608801526101e0860151610380880152928501516103a08701526102208501516103c0870152918401516103e08601526102608401516104008601528301516104208501526102a0830151610440850152909101516104609092019190915250565b6000610a6082019050845182526020850151602083015260408501516127ca604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a08501516101006128178185018380518252602090810151910152565b60c087015191506101406128378186018480518252602090810151910152565b60e088015192506101806128578187018580518252602090810151910152565b9188015192506101c0916128778684018580518252602090810151910152565b61012089015193506102006128988188018680518252602090810151910152565b918901519350610240916128b88784018680518252602090810151910152565b6101608a015194506102806128d98189018780518252602090810151910152565b918a015180516102c08901526020908101516102e08901526101a08b015180516103008a0152810151610320890152938a015180516103408901528401516103608801526101e08a015180516103808901528401516103a088015289015180516103c08801528301516103e087015261022089015180516104008801528301516104208701529088015180516104408701528201516104608601526102608801518051610480870152909101516104a08501528601516104c0840152506102a08501516104e08301526129b0610500830185612590565b6129be6105e08301846125b3565b949350505050565b6000602082840312156129d857600080fd5b81518015158114611d0d57600080fd5b6001600160401b03828116828216039080821115612a0857612a0861253a565b5092915050565b60006001600160401b03808316818103612a2b57612a2b61253a565b6001019392505050565b60008251612a478184602087016124a8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000817000a" diff --git a/contract-bindings/artifacts/LightClientMock_bytecode.json b/contract-bindings/artifacts/LightClientMock_bytecode.json index 2999f519a..557ba7565 100644 --- a/contract-bindings/artifacts/LightClientMock_bytecode.json +++ b/contract-bindings/artifacts/LightClientMock_bytecode.json @@ -1 +1 @@ -"0x60a0604052306080523480156200001557600080fd5b50604051620033cd380380620033cd8339810160408190526200003891620004ec565b6200004262000058565b6200004f8383836200010c565b5050506200062c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a95760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001095780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b82516001600160401b031615158062000131575060208301516001600160401b031615155b806200013f57506020820151155b806200014d57506040820151155b806200015b57506060820151155b806200016657508151155b80620001795750610e108163ffffffff16105b806200018e57506301e133808163ffffffff16115b15620001ad576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b039485166001600160801b03199384168117680100000000000000009690921695909502908117909355604080880151600581905587516000559187015160015586015160025560608601516003556006805490921690931790911790556007556008805463ffffffff60a01b1916600160a01b63ffffffff8416021790556200024c43428562000251565b505050565b60095415801590620002d2575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110620002955762000295620005a5565b6000918252602090912060029091020154620002c7906801000000000000000090046001600160401b031684620005d1565b6001600160401b0316115b156200036c57600854600980549091600160c01b90046001600160401b0316908110620003035762000303620005a5565b60009182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186200034683620005fb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b0394851681529284166020808501918252830151851684830190815292909101516060840190815260098054600181018255600091909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b02600160801b600160c01b031995881668010000000000000000026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b604051606081016001600160401b03811182821017156200048357634e487b7160e01b600052604160045260246000fd5b60405290565b604051608081016001600160401b03811182821017156200048357634e487b7160e01b600052604160045260246000fd5b80516001600160401b0381168114620004d257600080fd5b919050565b805163ffffffff81168114620004d257600080fd5b60008060008385036101008112156200050457600080fd5b60608112156200051357600080fd5b6200051d62000452565b6200052886620004ba565b81526200053860208701620004ba565b60208201526040868101519082015293506080605f19820112156200055c57600080fd5b506200056762000489565b60608581015182526080860151602083015260a0860151604083015260c08601519082015291506200059c60e08501620004d7565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160401b03828116828216039080821115620005f457620005f4620005bb565b5092915050565b60006001600160401b038281166002600160401b03198101620006225762000622620005bb565b6001019392505050565b608051612d776200065660003960008181611182015281816111ab015261132a0152612d776000f3fe6080604052600436106101b75760003560e01c80638584d23f116100ec578063c23b9e9e1161008a578063e030330111610064578063e030330114610636578063f2fde38b14610656578063f567616014610676578063f9e50d191461069657600080fd5b8063c23b9e9e146105b1578063c8e5e498146105ea578063d24d933d1461060657600080fd5b80639baa3cc9116100c65780639baa3cc9146104a55780639fdb54a7146104c5578063ad3cb1cc1461051b578063b5adea3c1461055957600080fd5b80638584d23f1461040b5780638da5cb5b1461044857806396c1ca611461048557600080fd5b8063378ec23b1161015957806352d1902d1161013357806352d1902d146103a057806369cc6a04146103b5578063715018a6146103ca578063826e41fc146103df57600080fd5b8063378ec23b1461032d578063426d31941461034a5780634f1ef2861461038d57600080fd5b80632063d4f7116101955780632063d4f7146102695780632d52aad6146102895780632f79889d146102b6578063313df7b1146102f557600080fd5b8063013fa5fc146101bc57806302b592f3146101de5780630d8e6e2c1461023c575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121eb565b6106ab565b005b3480156101ea57600080fd5b506101fe6101f9366004612206565b61075e565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561024857600080fd5b50604080516001815260006020820181905291810191909152606001610233565b34801561027557600080fd5b506101dc61028436600461237c565b6107a9565b34801561029557600080fd5b506101dc6102a4366004612206565b600a805460ff19166001179055600b55565b3480156102c257600080fd5b506008546102dd90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561030157600080fd5b50600854610315906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b34801561033957600080fd5b50435b604051908152602001610233565b34801561035657600080fd5b5060005460015460025460035461036d9392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dc61039b366004612530565b610904565b3480156103ac57600080fd5b5061033c610923565b3480156103c157600080fd5b506101dc610940565b3480156103d657600080fd5b506101dc6109af565b3480156103eb57600080fd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561041757600080fd5b5061042b610426366004612206565b6109c1565b604080519283526001600160401b03909116602083015201610233565b34801561045457600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610315565b34801561049157600080fd5b506101dc6104a03660046125e9565b610af4565b3480156104b157600080fd5b506101dc6104c0366004612604565b610b7d565b3480156104d157600080fd5b506006546007546104f5916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b34801561052757600080fd5b5061054c604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161023391906126b4565b34801561056557600080fd5b506101dc6105743660046126e7565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105bd57600080fd5b506008546105d590600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b3480156105f657600080fd5b506101dc600a805460ff19169055565b34801561061257600080fd5b506004546005546104f5916001600160401b0380821692600160401b909204169083565b34801561064257600080fd5b506103fb610651366004612703565b610ca1565b34801561066257600080fd5b506101dc6106713660046121eb565b610cd7565b34801561068257600080fd5b506101dc610691366004612725565b610d1a565b3480156106a257600080fd5b5060095461033c565b6106b3610dc8565b6001600160a01b0381166106da5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107095760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061076e57600080fd5b6000918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6008546001600160a01b0316151580156107ce57506008546001600160a01b03163314155b156107ec576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610825575060065460208301516001600160401b03600160401b9092048216911611155b156108435760405163051c46ef60e01b815260040160405180910390fd5b6108508260400151610e23565b61085a8282610e93565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108a76108a04390565b4284610f8b565b81602001516001600160401b031682600001516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516108f891815260200190565b60405180910390a35050565b61090c611177565b6109158261121c565b61091f828261125d565b5050565b600061092d61131f565b50600080516020612d4b83398151915290565b610948610dc8565b6008546001600160a01b03161561099457600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109b7610dc8565b6109ad6000611368565b600980546000918291906109d6600183612830565b815481106109e6576109e6612843565b6000918252602090912060029091020154600160801b90046001600160401b0316841115610a2757604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610aed578460098281548110610a5757610a57612843565b6000918252602090912060029091020154600160801b90046001600160401b031610610ae55760098181548110610a9057610a90612843565b90600052602060002090600202016001015460098281548110610ab557610ab5612843565b906000526020600020906002020160000160109054906101000a90046001600160401b0316935093505050915091565b600101610a3b565b5050915091565b610afc610dc8565b610e108163ffffffff161080610b1b57506301e133808163ffffffff16115b80610b39575060085463ffffffff600160a01b909104811690821611155b15610b57576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610bc25750825b90506000826001600160401b03166001148015610bde5750303b155b905081158015610bec575080155b15610c0a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3457845460ff60401b1916600160401b1785555b610c3d866113d9565b610c456113ea565b610c508989896113f2565b8315610c9657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a5460009060ff16610cbd57610cb88383611523565b610cce565b81600b5484610ccc9190612830565b115b90505b92915050565b610cdf610dc8565b6001600160a01b038116610d0e57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610d1781611368565b50565b610d2660096000611ed9565b60005b815181101561091f576009828281518110610d4657610d46612843565b602090810291909101810151825460018181018555600094855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d29565b33610dfa7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109ad5760405163118cdaa760e01b8152336004820152602401610d05565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061091f5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d05565b6000610e9d611680565b9050610ea7611efa565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a083015260005460c08301525163ce537a7760e01b815273__$5c5c07cf4f55be9472c2b47d897172e765$__9063ce537a7790610f2790859085908890600401612a60565b602060405180830381865af4158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190612c8f565b610f85576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611001575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110610fcb57610fcb612843565b6000918252602090912060029091020154610ff690600160401b90046001600160401b031684612cb1565b6001600160401b0316115b1561109557600854600980549091600160c01b90046001600160401b031690811061102e5761102e612843565b60009182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861106f83612cd8565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b0394851681529284166020808501918252830151851684830190815292909101516060840190815260098054600181018255600091909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806111fe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111f2600080516020612d4b833981519152546001600160a01b031690565b6001600160a01b031614155b156109ad5760405163703e46dd60e11b815260040160405180910390fd5b611224610dc8565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610753565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112b7575060408051601f3d908101601f191682019092526112b491810190612cfe565b60015b6112df57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d05565b600080516020612d4b833981519152811461131057604051632a87526960e21b815260048101829052602401610d05565b61131a8383611cb0565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ad5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6113e1611d06565b610d1781611d4f565b6109ad611d06565b82516001600160401b0316151580611416575060208301516001600160401b031615155b8061142357506020820151155b8061143057506040820151155b8061143d57506060820151155b8061144757508151155b806114595750610e108163ffffffff16105b8061146d57506301e133808163ffffffff16115b1561148b576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b039485166001600160801b03199384168117600160401b9690921695909502908117909355604080880151600581905587516000559187015160015586015160025560608601516003556006805490921690931790911790556007556008805463ffffffff60a01b1916600160a01b63ffffffff84160217905561131a434285610f8b565b60095460009043841180611535575080155b806115805750600854600980549091600160c01b90046001600160401b031690811061156357611563612843565b60009182526020909120600290910201546001600160401b031684105b1561159e5760405163b0b4387760e01b815260040160405180910390fd5b600080806115ad600185612830565b90505b8161164b57600854600160c01b90046001600160401b0316811061164b5786600982815481106115e2576115e2612843565b60009182526020909120600290910201546001600160401b03161161163957600191506009818154811061161857611618612843565b60009182526020909120600290910201546001600160401b0316925061164b565b8061164381612d17565b9150506115b0565b816116695760405163b0b4387760e01b815260040160405180910390fd5b856116748489612830565b11979650505050505050565b611688611f18565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611cb982611d57565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cfe5761131a8282611dbc565b61091f611e32565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109ad57604051631afcd79f60e31b815260040160405180910390fd5b610cdf611d06565b806001600160a01b03163b600003611d8d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d05565b600080516020612d4b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611dd99190612d2e565b600060405180830381855af49150503d8060008114611e14576040519150601f19603f3d011682016040523d82523d6000602084013e611e19565b606091505b5091509150611e29858383611e51565b95945050505050565b34156109ad5760405163b398979f60e01b815260040160405180910390fd5b606082611e6657611e6182611eb0565b611ea9565b8151158015611e7d57506001600160a01b0384163b155b15611ea657604051639996b31560e01b81526001600160a01b0385166004820152602401610d05565b50805b9392505050565b805115611ec05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546000825560020290600052602060002090810190610d1791906121a5565b6040518060e001604052806007906020820280368337509192915050565b604051806102c001604052806000815260200160008152602001611f4f604051806040016040528060008152602001600081525090565b8152602001611f71604051806040016040528060008152602001600081525090565b8152602001611f93604051806040016040528060008152602001600081525090565b8152602001611fb5604051806040016040528060008152602001600081525090565b8152602001611fd7604051806040016040528060008152602001600081525090565b8152602001611ff9604051806040016040528060008152602001600081525090565b815260200161201b604051806040016040528060008152602001600081525090565b815260200161203d604051806040016040528060008152602001600081525090565b815260200161205f604051806040016040528060008152602001600081525090565b8152602001612081604051806040016040528060008152602001600081525090565b81526020016120a3604051806040016040528060008152602001600081525090565b81526020016120c5604051806040016040528060008152602001600081525090565b81526020016120e7604051806040016040528060008152602001600081525090565b8152602001612109604051806040016040528060008152602001600081525090565b815260200161212b604051806040016040528060008152602001600081525090565b815260200161214d604051806040016040528060008152602001600081525090565b815260200161216f604051806040016040528060008152602001600081525090565b8152602001612191604051806040016040528060008152602001600081525090565b815260006020820181905260409091015290565b5b808211156121cb5780546001600160c01b0319168155600060018201556002016121a6565b5090565b80356001600160a01b03811681146121e657600080fd5b919050565b6000602082840312156121fd57600080fd5b610cce826121cf565b60006020828403121561221857600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b03811182821017156122585761225861221f565b60405290565b604051608081016001600160401b03811182821017156122585761225861221f565b604051601f8201601f191681016001600160401b03811182821017156122a8576122a861221f565b604052919050565b80356001600160401b03811681146121e657600080fd5b6000606082840312156122d957600080fd5b604051606081018181106001600160401b03821117156122fb576122fb61221f565b60405290508061230a836122b0565b8152612318602084016122b0565b6020820152604083013560408201525092915050565b60006040828403121561234057600080fd5b604051604081018181106001600160401b03821117156123625761236261221f565b604052823581526020928301359281019290925250919050565b6000808284036104e081121561239157600080fd5b61239b85856122c7565b925061048080605f19830112156123b157600080fd5b6123b9612235565b91506123c8866060870161232e565b82526123d78660a0870161232e565b60208301526123e98660e0870161232e565b60408301526101206123fd8782880161232e565b60608401526101606124118882890161232e565b60808501526101a061242589828a0161232e565b60a08601526101e06124398a828b0161232e565b60c087015261022061244d8b828c0161232e565b60e08801526102606124618c828d0161232e565b6101008901526102a06124768d828e0161232e565b878a01526124888d6102e08e0161232e565b6101408a015261249c8d6103208e0161232e565b868a01526124ae8d6103608e0161232e565b6101808a01526103a08c0135948901949094526103c08b01356101c08901526103e08b0135928801929092526104008a01356102008801526104208a013590870152610440890135610240870152610460890135908601529287013561028085015250506104a0850135908201526104c0909301356102c08401525092909150565b6000806040838503121561254357600080fd5b61254c836121cf565b91506020808401356001600160401b038082111561256957600080fd5b818601915086601f83011261257d57600080fd5b81358181111561258f5761258f61221f565b6125a1601f8201601f19168501612280565b915080825287848285010111156125b757600080fd5b80848401858401376000848284010152508093505050509250929050565b803563ffffffff811681146121e657600080fd5b6000602082840312156125fb57600080fd5b610cce826125d5565b60008060008084860361012081121561261c57600080fd5b61262687876122c7565b94506080605f198201121561263a57600080fd5b5061264361225e565b60608681013582526080870135602083015260a0870135604083015260c087013590820152925061267660e086016125d5565b915061268561010086016121cf565b905092959194509250565b60005b838110156126ab578181015183820152602001612693565b50506000910152565b60208152600082518060208401526126d3816040850160208701612690565b601f01601f19169190910160400192915050565b6000606082840312156126f957600080fd5b610cce83836122c7565b6000806040838503121561271657600080fd5b50508035926020909101359150565b6000602080838503121561273857600080fd5b82356001600160401b038082111561274f57600080fd5b818501915085601f83011261276357600080fd5b8135818111156127755761277561221f565b612783848260051b01612280565b818152848101925060079190911b8301840190878211156127a357600080fd5b928401925b8184101561280f57608084890312156127c15760008081fd5b6127c961225e565b6127d2856122b0565b81526127df8686016122b0565b8682015260406127f08187016122b0565b90820152606085810135908201528352608090930192918401916127a8565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cd157610cd161281a565b634e487b7160e01b600052603260045260246000fd5b8060005b6007811015610f8557815184526020938401939091019060010161285d565b61289182825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e08401525060808101516101006128f48185018380518252602090810151910152565b60a083015191506101406129148186018480518252602090810151910152565b60c084015192506101806129348187018580518252602090810151910152565b60e085015193506101c06129548188018680518252602090810151910152565b928501519350610200926129748785018680518252602090810151910152565b61012086015194506102406129958189018780518252602090810151910152565b928601519450610280926129b58885018780518252602090810151910152565b61016087015195506102c06129d6818a018880518252602090810151910152565b9287015180516103008a0152602001516103208901526101a0870151610340890152908601516103608801526101e0860151610380880152928501516103a08701526102208501516103c0870152918401516103e08601526102608401516104008601528301516104208501526102a0830151610440850152909101516104609092019190915250565b6000610a608201905084518252602085015160208301526040850151612a93604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151610100612ae08185018380518252602090810151910152565b60c08701519150610140612b008186018480518252602090810151910152565b60e08801519250610180612b208187018580518252602090810151910152565b9188015192506101c091612b408684018580518252602090810151910152565b6101208901519350610200612b618188018680518252602090810151910152565b91890151935061024091612b818784018680518252602090810151910152565b6101608a01519450610280612ba28189018780518252602090810151910152565b918a015180516102c08901526020908101516102e08901526101a08b015180516103008a0152810151610320890152938a015180516103408901528401516103608801526101e08a015180516103808901528401516103a088015289015180516103c08801528301516103e087015261022089015180516104008801528301516104208701529088015180516104408701528201516104608601526102608801518051610480870152909101516104a08501528601516104c0840152506102a08501516104e0830152612c79610500830185612859565b612c876105e083018461287c565b949350505050565b600060208284031215612ca157600080fd5b81518015158114611ea957600080fd5b6001600160401b03828116828216039080821115612cd157612cd161281a565b5092915050565b60006001600160401b03808316818103612cf457612cf461281a565b6001019392505050565b600060208284031215612d1057600080fd5b5051919050565b600081612d2657612d2661281a565b506000190190565b60008251612d40818460208701612690565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000817000a" +"0x60a0604052306080523480156200001557600080fd5b5060405162003136380380620031368339810160408190526200003891620002e0565b6200004262000058565b6200004f8383836200010c565b50505062000399565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a95760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001095780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b82516001600160401b031615158062000131575060208301516001600160401b031615155b806200013f57506020820151155b806200014d57506040820151155b806200015b57506060820151155b806200016657508151155b80620001795750610e108163ffffffff16105b806200018e57506301e133808163ffffffff16115b15620001ad576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b0390811668010000000000000000026001600160801b03199384169190951690811785179093556040968701516005819055865160005590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b604051606081016001600160401b03811182821017156200027757634e487b7160e01b600052604160045260246000fd5b60405290565b604051608081016001600160401b03811182821017156200027757634e487b7160e01b600052604160045260246000fd5b80516001600160401b0381168114620002c657600080fd5b919050565b805163ffffffff81168114620002c657600080fd5b6000806000838503610100811215620002f857600080fd5b60608112156200030757600080fd5b6200031162000246565b6200031c86620002ae565b81526200032c60208701620002ae565b60208201526040868101519082015293506080605f19820112156200035057600080fd5b506200035b6200027d565b60608581015182526080860151602083015260a0860151604083015260c08601519082015291506200039060e08501620002cb565b90509250925092565b608051612d73620003c360003960008181611182015281816111ab015261132a0152612d736000f3fe6080604052600436106101b75760003560e01c80638584d23f116100ec578063c23b9e9e1161008a578063e030330111610064578063e030330114610636578063f2fde38b14610656578063f567616014610676578063f9e50d191461069657600080fd5b8063c23b9e9e146105b1578063c8e5e498146105ea578063d24d933d1461060657600080fd5b80639baa3cc9116100c65780639baa3cc9146104a55780639fdb54a7146104c5578063ad3cb1cc1461051b578063b5adea3c1461055957600080fd5b80638584d23f1461040b5780638da5cb5b1461044857806396c1ca611461048557600080fd5b8063378ec23b1161015957806352d1902d1161013357806352d1902d146103a057806369cc6a04146103b5578063715018a6146103ca578063826e41fc146103df57600080fd5b8063378ec23b1461032d578063426d31941461034a5780634f1ef2861461038d57600080fd5b80632063d4f7116101955780632063d4f7146102695780632d52aad6146102895780632f79889d146102b6578063313df7b1146102f557600080fd5b8063013fa5fc146101bc57806302b592f3146101de5780630d8e6e2c1461023c575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121e7565b6106ab565b005b3480156101ea57600080fd5b506101fe6101f9366004612202565b61075e565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561024857600080fd5b50604080516001815260006020820181905291810191909152606001610233565b34801561027557600080fd5b506101dc610284366004612378565b6107a9565b34801561029557600080fd5b506101dc6102a4366004612202565b600a805460ff19166001179055600b55565b3480156102c257600080fd5b506008546102dd90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561030157600080fd5b50600854610315906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b34801561033957600080fd5b50435b604051908152602001610233565b34801561035657600080fd5b5060005460015460025460035461036d9392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dc61039b36600461252c565b610904565b3480156103ac57600080fd5b5061033c610923565b3480156103c157600080fd5b506101dc610940565b3480156103d657600080fd5b506101dc6109af565b3480156103eb57600080fd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561041757600080fd5b5061042b610426366004612202565b6109c1565b604080519283526001600160401b03909116602083015201610233565b34801561045457600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610315565b34801561049157600080fd5b506101dc6104a03660046125e5565b610af4565b3480156104b157600080fd5b506101dc6104c0366004612600565b610b7d565b3480156104d157600080fd5b506006546007546104f5916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b34801561052757600080fd5b5061054c604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161023391906126b0565b34801561056557600080fd5b506101dc6105743660046126e3565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105bd57600080fd5b506008546105d590600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b3480156105f657600080fd5b506101dc600a805460ff19169055565b34801561061257600080fd5b506004546005546104f5916001600160401b0380821692600160401b909204169083565b34801561064257600080fd5b506103fb6106513660046126ff565b610ca1565b34801561066257600080fd5b506101dc6106713660046121e7565b610cd7565b34801561068257600080fd5b506101dc610691366004612721565b610d1a565b3480156106a257600080fd5b5060095461033c565b6106b3610dc8565b6001600160a01b0381166106da5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107095760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061076e57600080fd5b6000918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6008546001600160a01b0316151580156107ce57506008546001600160a01b03163314155b156107ec576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610825575060065460208301516001600160401b03600160401b9092048216911611155b156108435760405163051c46ef60e01b815260040160405180910390fd5b6108508260400151610e23565b61085a8282610e93565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108a76108a04390565b4284610f8b565b81602001516001600160401b031682600001516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516108f891815260200190565b60405180910390a35050565b61090c611177565b6109158261121c565b61091f828261125d565b5050565b600061092d61131f565b50600080516020612d4783398151915290565b610948610dc8565b6008546001600160a01b03161561099457600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109b7610dc8565b6109ad6000611368565b600980546000918291906109d660018361282c565b815481106109e6576109e661283f565b6000918252602090912060029091020154600160801b90046001600160401b0316841115610a2757604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610aed578460098281548110610a5757610a5761283f565b6000918252602090912060029091020154600160801b90046001600160401b031610610ae55760098181548110610a9057610a9061283f565b90600052602060002090600202016001015460098281548110610ab557610ab561283f565b906000526020600020906002020160000160109054906101000a90046001600160401b0316935093505050915091565b600101610a3b565b5050915091565b610afc610dc8565b610e108163ffffffff161080610b1b57506301e133808163ffffffff16115b80610b39575060085463ffffffff600160a01b909104811690821611155b15610b57576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610bc25750825b90506000826001600160401b03166001148015610bde5750303b155b905081158015610bec575080155b15610c0a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3457845460ff60401b1916600160401b1785555b610c3d866113d9565b610c456113ea565b610c508989896113f2565b8315610c9657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a5460009060ff16610cbd57610cb8838361151f565b610cce565b81600b5484610ccc919061282c565b115b90505b92915050565b610cdf610dc8565b6001600160a01b038116610d0e57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610d1781611368565b50565b610d2660096000611ed5565b60005b815181101561091f576009828281518110610d4657610d4661283f565b602090810291909101810151825460018181018555600094855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d29565b33610dfa7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109ad5760405163118cdaa760e01b8152336004820152602401610d05565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061091f5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d05565b6000610e9d61167c565b9050610ea7611ef6565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a083015260005460c08301525163ce537a7760e01b815273__$5c5c07cf4f55be9472c2b47d897172e765$__9063ce537a7790610f2790859085908890600401612a5c565b602060405180830381865af4158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190612c8b565b610f85576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611001575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110610fcb57610fcb61283f565b6000918252602090912060029091020154610ff690600160401b90046001600160401b031684612cad565b6001600160401b0316115b1561109557600854600980549091600160c01b90046001600160401b031690811061102e5761102e61283f565b60009182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861106f83612cd4565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b0394851681529284166020808501918252830151851684830190815292909101516060840190815260098054600181018255600091909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806111fe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111f2600080516020612d47833981519152546001600160a01b031690565b6001600160a01b031614155b156109ad5760405163703e46dd60e11b815260040160405180910390fd5b611224610dc8565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610753565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112b7575060408051601f3d908101601f191682019092526112b491810190612cfa565b60015b6112df57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d05565b600080516020612d47833981519152811461131057604051632a87526960e21b815260048101829052602401610d05565b61131a8383611cac565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ad5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6113e1611d02565b610d1781611d4b565b6109ad611d02565b82516001600160401b0316151580611416575060208301516001600160401b031615155b8061142357506020820151155b8061143057506040820151155b8061143d57506060820151155b8061144757508151155b806114595750610e108163ffffffff16105b8061146d57506301e133808163ffffffff16115b1561148b576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b03199384169190951690811785179093556040968701516005819055865160005590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b60095460009043841180611531575080155b8061157c5750600854600980549091600160c01b90046001600160401b031690811061155f5761155f61283f565b60009182526020909120600290910201546001600160401b031684105b1561159a5760405163b0b4387760e01b815260040160405180910390fd5b600080806115a960018561282c565b90505b8161164757600854600160c01b90046001600160401b031681106116475786600982815481106115de576115de61283f565b60009182526020909120600290910201546001600160401b0316116116355760019150600981815481106116145761161461283f565b60009182526020909120600290910201546001600160401b03169250611647565b8061163f81612d13565b9150506115ac565b816116655760405163b0b4387760e01b815260040160405180910390fd5b85611670848961282c565b11979650505050505050565b611684611f14565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611cb582611d53565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cfa5761131a8282611db8565b61091f611e2e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109ad57604051631afcd79f60e31b815260040160405180910390fd5b610cdf611d02565b806001600160a01b03163b600003611d8957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d05565b600080516020612d4783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611dd59190612d2a565b600060405180830381855af49150503d8060008114611e10576040519150601f19603f3d011682016040523d82523d6000602084013e611e15565b606091505b5091509150611e25858383611e4d565b95945050505050565b34156109ad5760405163b398979f60e01b815260040160405180910390fd5b606082611e6257611e5d82611eac565b611ea5565b8151158015611e7957506001600160a01b0384163b155b15611ea257604051639996b31560e01b81526001600160a01b0385166004820152602401610d05565b50805b9392505050565b805115611ebc5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546000825560020290600052602060002090810190610d1791906121a1565b6040518060e001604052806007906020820280368337509192915050565b604051806102c001604052806000815260200160008152602001611f4b604051806040016040528060008152602001600081525090565b8152602001611f6d604051806040016040528060008152602001600081525090565b8152602001611f8f604051806040016040528060008152602001600081525090565b8152602001611fb1604051806040016040528060008152602001600081525090565b8152602001611fd3604051806040016040528060008152602001600081525090565b8152602001611ff5604051806040016040528060008152602001600081525090565b8152602001612017604051806040016040528060008152602001600081525090565b8152602001612039604051806040016040528060008152602001600081525090565b815260200161205b604051806040016040528060008152602001600081525090565b815260200161207d604051806040016040528060008152602001600081525090565b815260200161209f604051806040016040528060008152602001600081525090565b81526020016120c1604051806040016040528060008152602001600081525090565b81526020016120e3604051806040016040528060008152602001600081525090565b8152602001612105604051806040016040528060008152602001600081525090565b8152602001612127604051806040016040528060008152602001600081525090565b8152602001612149604051806040016040528060008152602001600081525090565b815260200161216b604051806040016040528060008152602001600081525090565b815260200161218d604051806040016040528060008152602001600081525090565b815260006020820181905260409091015290565b5b808211156121c75780546001600160c01b0319168155600060018201556002016121a2565b5090565b80356001600160a01b03811681146121e257600080fd5b919050565b6000602082840312156121f957600080fd5b610cce826121cb565b60006020828403121561221457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b03811182821017156122545761225461221b565b60405290565b604051608081016001600160401b03811182821017156122545761225461221b565b604051601f8201601f191681016001600160401b03811182821017156122a4576122a461221b565b604052919050565b80356001600160401b03811681146121e257600080fd5b6000606082840312156122d557600080fd5b604051606081018181106001600160401b03821117156122f7576122f761221b565b604052905080612306836122ac565b8152612314602084016122ac565b6020820152604083013560408201525092915050565b60006040828403121561233c57600080fd5b604051604081018181106001600160401b038211171561235e5761235e61221b565b604052823581526020928301359281019290925250919050565b6000808284036104e081121561238d57600080fd5b61239785856122c3565b925061048080605f19830112156123ad57600080fd5b6123b5612231565b91506123c4866060870161232a565b82526123d38660a0870161232a565b60208301526123e58660e0870161232a565b60408301526101206123f98782880161232a565b606084015261016061240d8882890161232a565b60808501526101a061242189828a0161232a565b60a08601526101e06124358a828b0161232a565b60c08701526102206124498b828c0161232a565b60e088015261026061245d8c828d0161232a565b6101008901526102a06124728d828e0161232a565b878a01526124848d6102e08e0161232a565b6101408a01526124988d6103208e0161232a565b868a01526124aa8d6103608e0161232a565b6101808a01526103a08c0135948901949094526103c08b01356101c08901526103e08b0135928801929092526104008a01356102008801526104208a013590870152610440890135610240870152610460890135908601529287013561028085015250506104a0850135908201526104c0909301356102c08401525092909150565b6000806040838503121561253f57600080fd5b612548836121cb565b91506020808401356001600160401b038082111561256557600080fd5b818601915086601f83011261257957600080fd5b81358181111561258b5761258b61221b565b61259d601f8201601f1916850161227c565b915080825287848285010111156125b357600080fd5b80848401858401376000848284010152508093505050509250929050565b803563ffffffff811681146121e257600080fd5b6000602082840312156125f757600080fd5b610cce826125d1565b60008060008084860361012081121561261857600080fd5b61262287876122c3565b94506080605f198201121561263657600080fd5b5061263f61225a565b60608681013582526080870135602083015260a0870135604083015260c087013590820152925061267260e086016125d1565b915061268161010086016121cb565b905092959194509250565b60005b838110156126a757818101518382015260200161268f565b50506000910152565b60208152600082518060208401526126cf81604085016020870161268c565b601f01601f19169190910160400192915050565b6000606082840312156126f557600080fd5b610cce83836122c3565b6000806040838503121561271257600080fd5b50508035926020909101359150565b6000602080838503121561273457600080fd5b82356001600160401b038082111561274b57600080fd5b818501915085601f83011261275f57600080fd5b8135818111156127715761277161221b565b61277f848260051b0161227c565b818152848101925060079190911b83018401908782111561279f57600080fd5b928401925b8184101561280b57608084890312156127bd5760008081fd5b6127c561225a565b6127ce856122ac565b81526127db8686016122ac565b8682015260406127ec8187016122ac565b90820152606085810135908201528352608090930192918401916127a4565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cd157610cd1612816565b634e487b7160e01b600052603260045260246000fd5b8060005b6007811015610f85578151845260209384019390910190600101612859565b61288d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e08401525060808101516101006128f08185018380518252602090810151910152565b60a083015191506101406129108186018480518252602090810151910152565b60c084015192506101806129308187018580518252602090810151910152565b60e085015193506101c06129508188018680518252602090810151910152565b928501519350610200926129708785018680518252602090810151910152565b61012086015194506102406129918189018780518252602090810151910152565b928601519450610280926129b18885018780518252602090810151910152565b61016087015195506102c06129d2818a018880518252602090810151910152565b9287015180516103008a0152602001516103208901526101a0870151610340890152908601516103608801526101e0860151610380880152928501516103a08701526102208501516103c0870152918401516103e08601526102608401516104008601528301516104208501526102a0830151610440850152909101516104609092019190915250565b6000610a608201905084518252602085015160208301526040850151612a8f604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151610100612adc8185018380518252602090810151910152565b60c08701519150610140612afc8186018480518252602090810151910152565b60e08801519250610180612b1c8187018580518252602090810151910152565b9188015192506101c091612b3c8684018580518252602090810151910152565b6101208901519350610200612b5d8188018680518252602090810151910152565b91890151935061024091612b7d8784018680518252602090810151910152565b6101608a01519450610280612b9e8189018780518252602090810151910152565b918a015180516102c08901526020908101516102e08901526101a08b015180516103008a0152810151610320890152938a015180516103408901528401516103608801526101e08a015180516103808901528401516103a088015289015180516103c08801528301516103e087015261022089015180516104008801528301516104208701529088015180516104408701528201516104608601526102608801518051610480870152909101516104a08501528601516104c0840152506102a08501516104e0830152612c75610500830185612855565b612c836105e0830184612878565b949350505050565b600060208284031215612c9d57600080fd5b81518015158114611ea557600080fd5b6001600160401b03828116828216039080821115612ccd57612ccd612816565b5092915050565b60006001600160401b03808316818103612cf057612cf0612816565b6001019392505050565b600060208284031215612d0c57600080fd5b5051919050565b600081612d2257612d22612816565b506000190190565b60008251612d3c81846020870161268c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000817000a" diff --git a/contract-bindings/artifacts/LightClient_bytecode.json b/contract-bindings/artifacts/LightClient_bytecode.json index 656720cbe..659973104 100644 --- a/contract-bindings/artifacts/LightClient_bytecode.json +++ b/contract-bindings/artifacts/LightClient_bytecode.json @@ -1 +1 @@ -"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a0a62000104600039600081816110d0015281816110f901526112780152612a0a6000f3fe60806040526004361061014b5760003560e01c8063826e41fc116100b6578063ad3cb1cc1161006f578063ad3cb1cc14610482578063c23b9e9e146104c0578063d24d933d146104f9578063e030330114610529578063f2fde38b14610549578063f9e50d191461056957600080fd5b8063826e41fc146103465780638584d23f146103725780638da5cb5b146103af57806396c1ca61146103ec5780639baa3cc91461040c5780639fdb54a71461042c57600080fd5b8063378ec23b11610108578063378ec23b14610294578063426d3194146102b15780634f1ef286146102f457806352d1902d1461030757806369cc6a041461031c578063715018a61461033157600080fd5b8063013fa5fc1461015057806302b592f3146101725780630d8e6e2c146101d05780632063d4f7146101fd5780632f79889d1461021d578063313df7b11461025c575b600080fd5b34801561015c57600080fd5b5061017061016b366004611f90565b61057e565b005b34801561017e57600080fd5b5061019261018d366004611fab565b610631565b6040516101c794939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101dc57600080fd5b506040805160018152600060208201819052918101919091526060016101c7565b34801561020957600080fd5b506101706102183660046120ff565b61067c565b34801561022957600080fd5b5060085461024490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101c7565b34801561026857600080fd5b5060085461027c906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b3480156102a057600080fd5b50435b6040519081526020016101c7565b3480156102bd57600080fd5b506000546001546002546003546102d49392919084565b6040805194855260208501939093529183015260608201526080016101c7565b6101706103023660046122b3565b6107d7565b34801561031357600080fd5b506102a36107f6565b34801561032857600080fd5b50610170610813565b34801561033d57600080fd5b50610170610882565b34801561035257600080fd5b506008546001600160a01b031615155b60405190151581526020016101c7565b34801561037e57600080fd5b5061039261038d366004611fab565b610894565b604080519283526001600160401b039091166020830152016101c7565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661027c565b3480156103f857600080fd5b5061017061040736600461236c565b6109c7565b34801561041857600080fd5b50610170610427366004612387565b610a50565b34801561043857600080fd5b5060065460075461045c916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101c7565b34801561048e57600080fd5b506104b3604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101c79190612458565b3480156104cc57600080fd5b506008546104e490600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101c7565b34801561050557600080fd5b5060045460055461045c916001600160401b0380821692600160401b909204169083565b34801561053557600080fd5b5061036261054436600461248b565b610b74565b34801561055557600080fd5b50610170610564366004611f90565b610cd3565b34801561057557600080fd5b506009546102a3565b610586610d16565b6001600160a01b0381166105ad5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105dc5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061064157600080fd5b6000918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6008546001600160a01b0316151580156106a157506008546001600160a01b03163314155b156106bf576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b0391821691161115806106f8575060065460208301516001600160401b03600160401b9092048216911611155b156107165760405163051c46ef60e01b815260040160405180910390fd5b6107238260400151610d71565b61072d8282610de1565b81516006805460208501516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604082015160075561077a6107734390565b4284610ed9565b81602001516001600160401b031682600001516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107cb91815260200190565b60405180910390a35050565b6107df6110c5565b6107e88261116a565b6107f282826111ab565b5050565b600061080061126d565b506000805160206129de83398151915290565b61081b610d16565b6008546001600160a01b03161561086757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61088a610d16565b61088060006112b6565b600980546000918291906108a96001836124c3565b815481106108b9576108b96124d6565b6000918252602090912060029091020154600160801b90046001600160401b03168411156108fa57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109c057846009828154811061092a5761092a6124d6565b6000918252602090912060029091020154600160801b90046001600160401b0316106109b85760098181548110610963576109636124d6565b90600052602060002090600202016001015460098281548110610988576109886124d6565b906000526020600020906002020160000160109054906101000a90046001600160401b0316935093505050915091565b60010161090e565b5050915091565b6109cf610d16565b610e108163ffffffff1610806109ee57506301e133808163ffffffff16115b80610a0c575060085463ffffffff600160a01b909104811690821611155b15610a2a576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a955750825b90506000826001600160401b03166001148015610ab15750303b155b905081158015610abf575080155b15610add5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b0757845460ff60401b1916600160401b1785555b610b1086611327565b610b18611338565b610b23898989611340565b8315610b6957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b60095460009043841180610b86575080155b80610bd15750600854600980549091600160c01b90046001600160401b0316908110610bb457610bb46124d6565b60009182526020909120600290910201546001600160401b031684105b15610bef5760405163b0b4387760e01b815260040160405180910390fd5b60008080610bfe6001856124c3565b90505b81610c9c57600854600160c01b90046001600160401b03168110610c9c578660098281548110610c3357610c336124d6565b60009182526020909120600290910201546001600160401b031611610c8a576001915060098181548110610c6957610c696124d6565b60009182526020909120600290910201546001600160401b03169250610c9c565b80610c94816124ec565b915050610c01565b81610cba5760405163b0b4387760e01b815260040160405180910390fd5b85610cc584896124c3565b119450505050505b92915050565b610cdb610d16565b6001600160a01b038116610d0a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610d13816112b6565b50565b33610d487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108805760405163118cdaa760e01b8152336004820152602401610d01565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806107f25760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d01565b6000610deb611471565b9050610df5611cc9565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a083015260005460c08301525163ce537a7760e01b815273__$5c5c07cf4f55be9472c2b47d897172e765$__9063ce537a7790610e759085908590889060040161270a565b602060405180830381865af4158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190612939565b610ed3576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590610f4f575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110610f1957610f196124d6565b6000918252602090912060029091020154610f4490600160401b90046001600160401b03168461295b565b6001600160401b0316115b15610fe357600854600980549091600160c01b90046001600160401b0316908110610f7c57610f7c6124d6565b60009182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018610fbd83612982565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b0394851681529284166020808501918252830151851684830190815292909101516060840190815260098054600181018255600091909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061114c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111406000805160206129de833981519152546001600160a01b031690565b6001600160a01b031614155b156108805760405163703e46dd60e11b815260040160405180910390fd5b611172610d16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610626565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611205575060408051601f3d908101601f19168201909252611202918101906129a8565b60015b61122d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d01565b6000805160206129de833981519152811461125e57604051632a87526960e21b815260048101829052602401610d01565b6112688383611aa0565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108805760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61132f611af6565b610d1381611b3f565b610880611af6565b82516001600160401b0316151580611364575060208301516001600160401b031615155b8061137157506020820151155b8061137e57506040820151155b8061138b57506060820151155b8061139557508151155b806113a75750610e108163ffffffff16105b806113bb57506301e133808163ffffffff16115b156113d9576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b039485166001600160801b03199384168117600160401b9690921695909502908117909355604080880151600581905587516000559187015160015586015160025560608601516003556006805490921690931790911790556007556008805463ffffffff60a01b1916600160a01b63ffffffff841602179055611268434285610ed9565b611479611ce7565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611aa982611b47565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611aee576112688282611bac565b6107f2611c22565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661088057604051631afcd79f60e31b815260040160405180910390fd5b610cdb611af6565b806001600160a01b03163b600003611b7d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d01565b6000805160206129de83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611bc991906129c1565b600060405180830381855af49150503d8060008114611c04576040519150601f19603f3d011682016040523d82523d6000602084013e611c09565b606091505b5091509150611c19858383611c41565b95945050505050565b34156108805760405163b398979f60e01b815260040160405180910390fd5b606082611c5657611c5182611ca0565b611c99565b8151158015611c6d57506001600160a01b0384163b155b15611c9657604051639996b31560e01b81526001600160a01b0385166004820152602401610d01565b50805b9392505050565b805115611cb05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060e001604052806007906020820280368337509192915050565b604051806102c001604052806000815260200160008152602001611d1e604051806040016040528060008152602001600081525090565b8152602001611d40604051806040016040528060008152602001600081525090565b8152602001611d62604051806040016040528060008152602001600081525090565b8152602001611d84604051806040016040528060008152602001600081525090565b8152602001611da6604051806040016040528060008152602001600081525090565b8152602001611dc8604051806040016040528060008152602001600081525090565b8152602001611dea604051806040016040528060008152602001600081525090565b8152602001611e0c604051806040016040528060008152602001600081525090565b8152602001611e2e604051806040016040528060008152602001600081525090565b8152602001611e50604051806040016040528060008152602001600081525090565b8152602001611e72604051806040016040528060008152602001600081525090565b8152602001611e94604051806040016040528060008152602001600081525090565b8152602001611eb6604051806040016040528060008152602001600081525090565b8152602001611ed8604051806040016040528060008152602001600081525090565b8152602001611efa604051806040016040528060008152602001600081525090565b8152602001611f1c604051806040016040528060008152602001600081525090565b8152602001611f3e604051806040016040528060008152602001600081525090565b8152602001611f60604051806040016040528060008152602001600081525090565b815260006020820181905260409091015290565b80356001600160a01b0381168114611f8b57600080fd5b919050565b600060208284031215611fa257600080fd5b611c9982611f74565b600060208284031215611fbd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b0381118282101715611ffd57611ffd611fc4565b60405290565b604051601f8201601f191681016001600160401b038111828210171561202b5761202b611fc4565b604052919050565b80356001600160401b0381168114611f8b57600080fd5b60006060828403121561205c57600080fd5b604051606081018181106001600160401b038211171561207e5761207e611fc4565b60405290508061208d83612033565b815261209b60208401612033565b6020820152604083013560408201525092915050565b6000604082840312156120c357600080fd5b604051604081018181106001600160401b03821117156120e5576120e5611fc4565b604052823581526020928301359281019290925250919050565b6000808284036104e081121561211457600080fd5b61211e858561204a565b925061048080605f198301121561213457600080fd5b61213c611fda565b915061214b86606087016120b1565b825261215a8660a087016120b1565b602083015261216c8660e087016120b1565b6040830152610120612180878288016120b1565b6060840152610160612194888289016120b1565b60808501526101a06121a889828a016120b1565b60a08601526101e06121bc8a828b016120b1565b60c08701526102206121d08b828c016120b1565b60e08801526102606121e48c828d016120b1565b6101008901526102a06121f98d828e016120b1565b878a015261220b8d6102e08e016120b1565b6101408a015261221f8d6103208e016120b1565b868a01526122318d6103608e016120b1565b6101808a01526103a08c0135948901949094526103c08b01356101c08901526103e08b0135928801929092526104008a01356102008801526104208a013590870152610440890135610240870152610460890135908601529287013561028085015250506104a0850135908201526104c0909301356102c08401525092909150565b600080604083850312156122c657600080fd5b6122cf83611f74565b91506020808401356001600160401b03808211156122ec57600080fd5b818601915086601f83011261230057600080fd5b81358181111561231257612312611fc4565b612324601f8201601f19168501612003565b9150808252878482850101111561233a57600080fd5b80848401858401376000848284010152508093505050509250929050565b803563ffffffff81168114611f8b57600080fd5b60006020828403121561237e57600080fd5b611c9982612358565b60008060008084860361012081121561239f57600080fd5b6123a9878761204a565b94506080605f19820112156123bd57600080fd5b50604051608081018181106001600160401b03821117156123e0576123e0611fc4565b8060405250606086013581526080860135602082015260a0860135604082015260c086013560608201528093505061241a60e08601612358565b91506124296101008601611f74565b905092959194509250565b60005b8381101561244f578181015183820152602001612437565b50506000910152565b6020815260008251806020840152612477816040850160208701612434565b601f01601f19169190910160400192915050565b6000806040838503121561249e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ccd57610ccd6124ad565b634e487b7160e01b600052603260045260246000fd5b6000816124fb576124fb6124ad565b506000190190565b8060005b6007811015610ed3578151845260209384019390910190600101612507565b61253b82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e084015250608081015161010061259e8185018380518252602090810151910152565b60a083015191506101406125be8186018480518252602090810151910152565b60c084015192506101806125de8187018580518252602090810151910152565b60e085015193506101c06125fe8188018680518252602090810151910152565b9285015193506102009261261e8785018680518252602090810151910152565b610120860151945061024061263f8189018780518252602090810151910152565b9286015194506102809261265f8885018780518252602090810151910152565b61016087015195506102c0612680818a018880518252602090810151910152565b9287015180516103008a0152602001516103208901526101a0870151610340890152908601516103608801526101e0860151610380880152928501516103a08701526102208501516103c0870152918401516103e08601526102608401516104008601528301516104208501526102a0830151610440850152909101516104609092019190915250565b6000610a60820190508451825260208501516020830152604085015161273d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a085015161010061278a8185018380518252602090810151910152565b60c087015191506101406127aa8186018480518252602090810151910152565b60e088015192506101806127ca8187018580518252602090810151910152565b9188015192506101c0916127ea8684018580518252602090810151910152565b610120890151935061020061280b8188018680518252602090810151910152565b9189015193506102409161282b8784018680518252602090810151910152565b6101608a0151945061028061284c8189018780518252602090810151910152565b918a015180516102c08901526020908101516102e08901526101a08b015180516103008a0152810151610320890152938a015180516103408901528401516103608801526101e08a015180516103808901528401516103a088015289015180516103c08801528301516103e087015261022089015180516104008801528301516104208701529088015180516104408701528201516104608601526102608801518051610480870152909101516104a08501528601516104c0840152506102a08501516104e0830152612923610500830185612503565b6129316105e0830184612526565b949350505050565b60006020828403121561294b57600080fd5b81518015158114611c9957600080fd5b6001600160401b0382811682821603908082111561297b5761297b6124ad565b5092915050565b60006001600160401b0380831681810361299e5761299e6124ad565b6001019392505050565b6000602082840312156129ba57600080fd5b5051919050565b600082516129d3818460208701612434565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000817000a" +"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a0662000104600039600081816110d0015281816110f901526112780152612a066000f3fe60806040526004361061014b5760003560e01c8063826e41fc116100b6578063ad3cb1cc1161006f578063ad3cb1cc14610482578063c23b9e9e146104c0578063d24d933d146104f9578063e030330114610529578063f2fde38b14610549578063f9e50d191461056957600080fd5b8063826e41fc146103465780638584d23f146103725780638da5cb5b146103af57806396c1ca61146103ec5780639baa3cc91461040c5780639fdb54a71461042c57600080fd5b8063378ec23b11610108578063378ec23b14610294578063426d3194146102b15780634f1ef286146102f457806352d1902d1461030757806369cc6a041461031c578063715018a61461033157600080fd5b8063013fa5fc1461015057806302b592f3146101725780630d8e6e2c146101d05780632063d4f7146101fd5780632f79889d1461021d578063313df7b11461025c575b600080fd5b34801561015c57600080fd5b5061017061016b366004611f8c565b61057e565b005b34801561017e57600080fd5b5061019261018d366004611fa7565b610631565b6040516101c794939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101dc57600080fd5b506040805160018152600060208201819052918101919091526060016101c7565b34801561020957600080fd5b506101706102183660046120fb565b61067c565b34801561022957600080fd5b5060085461024490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101c7565b34801561026857600080fd5b5060085461027c906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b3480156102a057600080fd5b50435b6040519081526020016101c7565b3480156102bd57600080fd5b506000546001546002546003546102d49392919084565b6040805194855260208501939093529183015260608201526080016101c7565b6101706103023660046122af565b6107d7565b34801561031357600080fd5b506102a36107f6565b34801561032857600080fd5b50610170610813565b34801561033d57600080fd5b50610170610882565b34801561035257600080fd5b506008546001600160a01b031615155b60405190151581526020016101c7565b34801561037e57600080fd5b5061039261038d366004611fa7565b610894565b604080519283526001600160401b039091166020830152016101c7565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661027c565b3480156103f857600080fd5b50610170610407366004612368565b6109c7565b34801561041857600080fd5b50610170610427366004612383565b610a50565b34801561043857600080fd5b5060065460075461045c916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101c7565b34801561048e57600080fd5b506104b3604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101c79190612454565b3480156104cc57600080fd5b506008546104e490600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101c7565b34801561050557600080fd5b5060045460055461045c916001600160401b0380821692600160401b909204169083565b34801561053557600080fd5b50610362610544366004612487565b610b74565b34801561055557600080fd5b50610170610564366004611f8c565b610cd3565b34801561057557600080fd5b506009546102a3565b610586610d16565b6001600160a01b0381166105ad5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105dc5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061064157600080fd5b6000918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6008546001600160a01b0316151580156106a157506008546001600160a01b03163314155b156106bf576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b0391821691161115806106f8575060065460208301516001600160401b03600160401b9092048216911611155b156107165760405163051c46ef60e01b815260040160405180910390fd5b6107238260400151610d71565b61072d8282610de1565b81516006805460208501516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604082015160075561077a6107734390565b4284610ed9565b81602001516001600160401b031682600001516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107cb91815260200190565b60405180910390a35050565b6107df6110c5565b6107e88261116a565b6107f282826111ab565b5050565b600061080061126d565b506000805160206129da83398151915290565b61081b610d16565b6008546001600160a01b03161561086757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61088a610d16565b61088060006112b6565b600980546000918291906108a96001836124bf565b815481106108b9576108b96124d2565b6000918252602090912060029091020154600160801b90046001600160401b03168411156108fa57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109c057846009828154811061092a5761092a6124d2565b6000918252602090912060029091020154600160801b90046001600160401b0316106109b85760098181548110610963576109636124d2565b90600052602060002090600202016001015460098281548110610988576109886124d2565b906000526020600020906002020160000160109054906101000a90046001600160401b0316935093505050915091565b60010161090e565b5050915091565b6109cf610d16565b610e108163ffffffff1610806109ee57506301e133808163ffffffff16115b80610a0c575060085463ffffffff600160a01b909104811690821611155b15610a2a576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a955750825b90506000826001600160401b03166001148015610ab15750303b155b905081158015610abf575080155b15610add5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b0757845460ff60401b1916600160401b1785555b610b1086611327565b610b18611338565b610b23898989611340565b8315610b6957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b60095460009043841180610b86575080155b80610bd15750600854600980549091600160c01b90046001600160401b0316908110610bb457610bb46124d2565b60009182526020909120600290910201546001600160401b031684105b15610bef5760405163b0b4387760e01b815260040160405180910390fd5b60008080610bfe6001856124bf565b90505b81610c9c57600854600160c01b90046001600160401b03168110610c9c578660098281548110610c3357610c336124d2565b60009182526020909120600290910201546001600160401b031611610c8a576001915060098181548110610c6957610c696124d2565b60009182526020909120600290910201546001600160401b03169250610c9c565b80610c94816124e8565b915050610c01565b81610cba5760405163b0b4387760e01b815260040160405180910390fd5b85610cc584896124bf565b119450505050505b92915050565b610cdb610d16565b6001600160a01b038116610d0a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610d13816112b6565b50565b33610d487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108805760405163118cdaa760e01b8152336004820152602401610d01565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806107f25760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d01565b6000610deb61146d565b9050610df5611cc5565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a083015260005460c08301525163ce537a7760e01b815273__$5c5c07cf4f55be9472c2b47d897172e765$__9063ce537a7790610e7590859085908890600401612706565b602060405180830381865af4158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190612935565b610ed3576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590610f4f575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110610f1957610f196124d2565b6000918252602090912060029091020154610f4490600160401b90046001600160401b031684612957565b6001600160401b0316115b15610fe357600854600980549091600160c01b90046001600160401b0316908110610f7c57610f7c6124d2565b60009182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018610fbd8361297e565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b0394851681529284166020808501918252830151851684830190815292909101516060840190815260098054600181018255600091909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061114c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111406000805160206129da833981519152546001600160a01b031690565b6001600160a01b031614155b156108805760405163703e46dd60e11b815260040160405180910390fd5b611172610d16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610626565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611205575060408051601f3d908101601f19168201909252611202918101906129a4565b60015b61122d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d01565b6000805160206129da833981519152811461125e57604051632a87526960e21b815260048101829052602401610d01565b6112688383611a9c565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108805760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61132f611af2565b610d1381611b3b565b610880611af2565b82516001600160401b0316151580611364575060208301516001600160401b031615155b8061137157506020820151155b8061137e57506040820151155b8061138b57506060820151155b8061139557508151155b806113a75750610e108163ffffffff16105b806113bb57506301e133808163ffffffff16115b156113d9576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b03199384169190951690811785179093556040968701516005819055865160005590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611475611ce3565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611aa582611b43565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611aea576112688282611ba8565b6107f2611c1e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661088057604051631afcd79f60e31b815260040160405180910390fd5b610cdb611af2565b806001600160a01b03163b600003611b7957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d01565b6000805160206129da83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611bc591906129bd565b600060405180830381855af49150503d8060008114611c00576040519150601f19603f3d011682016040523d82523d6000602084013e611c05565b606091505b5091509150611c15858383611c3d565b95945050505050565b34156108805760405163b398979f60e01b815260040160405180910390fd5b606082611c5257611c4d82611c9c565b611c95565b8151158015611c6957506001600160a01b0384163b155b15611c9257604051639996b31560e01b81526001600160a01b0385166004820152602401610d01565b50805b9392505050565b805115611cac5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060e001604052806007906020820280368337509192915050565b604051806102c001604052806000815260200160008152602001611d1a604051806040016040528060008152602001600081525090565b8152602001611d3c604051806040016040528060008152602001600081525090565b8152602001611d5e604051806040016040528060008152602001600081525090565b8152602001611d80604051806040016040528060008152602001600081525090565b8152602001611da2604051806040016040528060008152602001600081525090565b8152602001611dc4604051806040016040528060008152602001600081525090565b8152602001611de6604051806040016040528060008152602001600081525090565b8152602001611e08604051806040016040528060008152602001600081525090565b8152602001611e2a604051806040016040528060008152602001600081525090565b8152602001611e4c604051806040016040528060008152602001600081525090565b8152602001611e6e604051806040016040528060008152602001600081525090565b8152602001611e90604051806040016040528060008152602001600081525090565b8152602001611eb2604051806040016040528060008152602001600081525090565b8152602001611ed4604051806040016040528060008152602001600081525090565b8152602001611ef6604051806040016040528060008152602001600081525090565b8152602001611f18604051806040016040528060008152602001600081525090565b8152602001611f3a604051806040016040528060008152602001600081525090565b8152602001611f5c604051806040016040528060008152602001600081525090565b815260006020820181905260409091015290565b80356001600160a01b0381168114611f8757600080fd5b919050565b600060208284031215611f9e57600080fd5b611c9582611f70565b600060208284031215611fb957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b0381118282101715611ff957611ff9611fc0565b60405290565b604051601f8201601f191681016001600160401b038111828210171561202757612027611fc0565b604052919050565b80356001600160401b0381168114611f8757600080fd5b60006060828403121561205857600080fd5b604051606081018181106001600160401b038211171561207a5761207a611fc0565b6040529050806120898361202f565b81526120976020840161202f565b6020820152604083013560408201525092915050565b6000604082840312156120bf57600080fd5b604051604081018181106001600160401b03821117156120e1576120e1611fc0565b604052823581526020928301359281019290925250919050565b6000808284036104e081121561211057600080fd5b61211a8585612046565b925061048080605f198301121561213057600080fd5b612138611fd6565b915061214786606087016120ad565b82526121568660a087016120ad565b60208301526121688660e087016120ad565b604083015261012061217c878288016120ad565b6060840152610160612190888289016120ad565b60808501526101a06121a489828a016120ad565b60a08601526101e06121b88a828b016120ad565b60c08701526102206121cc8b828c016120ad565b60e08801526102606121e08c828d016120ad565b6101008901526102a06121f58d828e016120ad565b878a01526122078d6102e08e016120ad565b6101408a015261221b8d6103208e016120ad565b868a015261222d8d6103608e016120ad565b6101808a01526103a08c0135948901949094526103c08b01356101c08901526103e08b0135928801929092526104008a01356102008801526104208a013590870152610440890135610240870152610460890135908601529287013561028085015250506104a0850135908201526104c0909301356102c08401525092909150565b600080604083850312156122c257600080fd5b6122cb83611f70565b91506020808401356001600160401b03808211156122e857600080fd5b818601915086601f8301126122fc57600080fd5b81358181111561230e5761230e611fc0565b612320601f8201601f19168501611fff565b9150808252878482850101111561233657600080fd5b80848401858401376000848284010152508093505050509250929050565b803563ffffffff81168114611f8757600080fd5b60006020828403121561237a57600080fd5b611c9582612354565b60008060008084860361012081121561239b57600080fd5b6123a58787612046565b94506080605f19820112156123b957600080fd5b50604051608081018181106001600160401b03821117156123dc576123dc611fc0565b8060405250606086013581526080860135602082015260a0860135604082015260c086013560608201528093505061241660e08601612354565b91506124256101008601611f70565b905092959194509250565b60005b8381101561244b578181015183820152602001612433565b50506000910152565b6020815260008251806020840152612473816040850160208701612430565b601f01601f19169190910160400192915050565b6000806040838503121561249a57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ccd57610ccd6124a9565b634e487b7160e01b600052603260045260246000fd5b6000816124f7576124f76124a9565b506000190190565b8060005b6007811015610ed3578151845260209384019390910190600101612503565b61253782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e084015250608081015161010061259a8185018380518252602090810151910152565b60a083015191506101406125ba8186018480518252602090810151910152565b60c084015192506101806125da8187018580518252602090810151910152565b60e085015193506101c06125fa8188018680518252602090810151910152565b9285015193506102009261261a8785018680518252602090810151910152565b610120860151945061024061263b8189018780518252602090810151910152565b9286015194506102809261265b8885018780518252602090810151910152565b61016087015195506102c061267c818a018880518252602090810151910152565b9287015180516103008a0152602001516103208901526101a0870151610340890152908601516103608801526101e0860151610380880152928501516103a08701526102208501516103c0870152918401516103e08601526102608401516104008601528301516104208501526102a0830151610440850152909101516104609092019190915250565b6000610a608201905084518252602085015160208301526040850151612739604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a08501516101006127868185018380518252602090810151910152565b60c087015191506101406127a68186018480518252602090810151910152565b60e088015192506101806127c68187018580518252602090810151910152565b9188015192506101c0916127e68684018580518252602090810151910152565b61012089015193506102006128078188018680518252602090810151910152565b918901519350610240916128278784018680518252602090810151910152565b6101608a015194506102806128488189018780518252602090810151910152565b918a015180516102c08901526020908101516102e08901526101a08b015180516103008a0152810151610320890152938a015180516103408901528401516103608801526101e08a015180516103808901528401516103a088015289015180516103c08801528301516103e087015261022089015180516104008801528301516104208701529088015180516104408701528201516104608601526102608801518051610480870152909101516104a08501528601516104c0840152506102a08501516104e083015261291f6105008301856124ff565b61292d6105e0830184612522565b949350505050565b60006020828403121561294757600080fd5b81518015158114611c9557600080fd5b6001600160401b03828116828216039080821115612977576129776124a9565b5092915050565b60006001600160401b0380831681810361299a5761299a6124a9565b6001019392505050565b6000602082840312156129b657600080fd5b5051919050565b600082516129cf818460208701612430565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000817000a" diff --git a/contract-bindings/src/lib.rs b/contract-bindings/src/lib.rs index ee76dcf57..b7027bac6 100644 --- a/contract-bindings/src/lib.rs +++ b/contract-bindings/src/lib.rs @@ -7,6 +7,7 @@ pub mod erc1967_proxy; pub mod fee_contract; pub mod i_plonk_verifier; pub mod light_client; +pub mod light_client_arbitrum; pub mod light_client_mock; pub mod light_client_state_update_vk; pub mod light_client_state_update_vk_mock; diff --git a/contract-bindings/src/light_client_arbitrum.rs b/contract-bindings/src/light_client_arbitrum.rs new file mode 100644 index 000000000..df441f0a6 --- /dev/null +++ b/contract-bindings/src/light_client_arbitrum.rs @@ -0,0 +1,3238 @@ +pub use light_client_arbitrum::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod light_client_arbitrum { + pub use super::super::shared_types::*; + #[allow(deprecated)] + fn __abi() -> ::ethers::core::abi::Abi { + ::ethers::core::abi::ethabi::Contract { + constructor: ::core::option::Option::None, + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("UPGRADE_INTERFACE_VERSION"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("UPGRADE_INTERFACE_VERSION",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("currentBlockNumber"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("currentBlockNumber"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("disablePermissionedProverMode"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("disablePermissionedProverMode",), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("finalizedState"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("finalizedState"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("viewNum"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("blockHeight"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("blockCommRoot"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("BN254.ScalarField"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("genesisStakeTableState"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("genesisStakeTableState",), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("threshold"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("blsKeyComm"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("BN254.ScalarField"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("schnorrKeyComm"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("BN254.ScalarField"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amountComm"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("BN254.ScalarField"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("genesisState"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("genesisState"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("viewNum"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("blockHeight"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("blockCommRoot"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("BN254.ScalarField"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getHotShotCommitment"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getHotShotCommitment",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hotShotBlockHeight",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hotShotBlockCommRoot",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("BN254.ScalarField"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hotshotBlockHeight",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getStateHistoryCount"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getStateHistoryCount",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getVersion"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getVersion"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("majorVersion"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("minorVersion"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("patchVersion"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint8"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("initialize"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("initialize"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_genesis"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LightClient.LightClientState", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_genesisStakeTableState",), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LightClient.StakeTableState", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "_stateHistoryRetentionPeriod", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("isPermissionedProverEnabled"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isPermissionedProverEnabled",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("lagOverEscapeHatchThreshold"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("lagOverEscapeHatchThreshold",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("blockNumber"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("blockThreshold"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("newFinalizedState"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("newFinalizedState"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newState"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LightClient.LightClientState", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("proof"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IPlonkVerifier.PlonkProof", + ), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("owner"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("owner"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("permissionedProver"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("permissionedProver"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("proxiableUUID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("renounceOwnership"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("renounceOwnership"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setPermissionedProver"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setPermissionedProver",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("prover"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setstateHistoryRetentionPeriod"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setstateHistoryRetentionPeriod",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("historySeconds"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint32"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("stateHistoryCommitments"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("stateHistoryCommitments",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + },], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("l1BlockHeight"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("l1BlockTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hotShotBlockHeight",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hotShotBlockCommRoot",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("BN254.ScalarField"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("stateHistoryFirstIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("stateHistoryFirstIndex",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint64"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("stateHistoryRetentionPeriod"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("stateHistoryRetentionPeriod",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("transferOwnership"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferOwnership"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newImplementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Initialized"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Initialized"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("version"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NewState"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("NewState"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("viewNum"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("blockHeight"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(64usize), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("blockCommRoot"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("OwnershipTransferred",), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("previousOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("newOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("PermissionedProverNotRequired"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("PermissionedProverNotRequired",), + inputs: ::std::vec![], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("PermissionedProverRequired"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("PermissionedProverRequired",), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("permissionedProver",), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Upgrade"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Upgrade"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + },], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Upgraded"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Upgraded"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + },], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AddressEmptyCode"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AddressEmptyCode"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("target"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ERC1967InvalidImplementation"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ERC1967InvalidImplementation",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ERC1967NonPayable"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ERC1967NonPayable"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("FailedInnerCall"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("FailedInnerCall"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InsufficientSnapshotHistory"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InsufficientSnapshotHistory",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidAddress"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidAddress"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidArgs"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidArgs"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidHotShotBlockForCommitmentCheck"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "InvalidHotShotBlockForCommitmentCheck", + ), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidInitialization"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidInitialization",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidMaxStateHistory"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidMaxStateHistory",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidProof"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidProof"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NoChangeRequired"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NoChangeRequired"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NotInitializing"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotInitializing"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OutdatedState"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OutdatedState"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OwnableInvalidOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OwnableInvalidOwner",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("OwnableUnauthorizedAccount"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OwnableUnauthorizedAccount",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ProverNotPermissioned"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ProverNotPermissioned",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UUPSUnauthorizedCallContext"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UUPSUnauthorizedCallContext",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UUPSUnsupportedProxiableUUID"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UUPSUnsupportedProxiableUUID",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("slot"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("WrongStakeTableUsed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("WrongStakeTableUsed",), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static LIGHTCLIENTARBITRUM_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct LightClientArbitrum(::ethers::contract::Contract); + impl ::core::clone::Clone for LightClientArbitrum { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LightClientArbitrum { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LightClientArbitrum { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LightClientArbitrum { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LightClientArbitrum)) + .field(&self.address()) + .finish() + } + } + impl LightClientArbitrum { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + LIGHTCLIENTARBITRUM_ABI.clone(), + client, + )) + } + ///Calls the contract's `UPGRADE_INTERFACE_VERSION` (0xad3cb1cc) function + pub fn upgrade_interface_version( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([173, 60, 177, 204], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `currentBlockNumber` (0x378ec23b) function + pub fn current_block_number( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([55, 142, 194, 59], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `disablePermissionedProverMode` (0x69cc6a04) function + pub fn disable_permissioned_prover_mode( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([105, 204, 106, 4], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `finalizedState` (0x9fdb54a7) function + pub fn finalized_state( + &self, + ) -> ::ethers::contract::builders::ContractCall + { + self.0 + .method_hash([159, 219, 84, 167], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `genesisStakeTableState` (0x426d3194) function + pub fn genesis_stake_table_state( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ::ethers::core::types::U256, + ), + > { + self.0 + .method_hash([66, 109, 49, 148], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `genesisState` (0xd24d933d) function + pub fn genesis_state( + &self, + ) -> ::ethers::contract::builders::ContractCall + { + self.0 + .method_hash([210, 77, 147, 61], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getHotShotCommitment` (0x8584d23f) function + pub fn get_hot_shot_commitment( + &self, + hot_shot_block_height: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall + { + self.0 + .method_hash([133, 132, 210, 63], hot_shot_block_height) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getStateHistoryCount` (0xf9e50d19) function + pub fn get_state_history_count( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([249, 229, 13, 25], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getVersion` (0x0d8e6e2c) function + pub fn get_version(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([13, 142, 110, 44], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `initialize` (0x9baa3cc9) function + pub fn initialize( + &self, + genesis: LightClientState, + genesis_stake_table_state: StakeTableState, + state_history_retention_period: u32, + owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [155, 170, 60, 201], + ( + genesis, + genesis_stake_table_state, + state_history_retention_period, + owner, + ), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isPermissionedProverEnabled` (0x826e41fc) function + pub fn is_permissioned_prover_enabled( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([130, 110, 65, 252], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `lagOverEscapeHatchThreshold` (0xe0303301) function + pub fn lag_over_escape_hatch_threshold( + &self, + block_number: ::ethers::core::types::U256, + block_threshold: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([224, 48, 51, 1], (block_number, block_threshold)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `newFinalizedState` (0x2063d4f7) function + pub fn new_finalized_state( + &self, + new_state: LightClientState, + proof: PlonkProof, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([32, 99, 212, 247], (new_state, proof)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `owner` (0x8da5cb5b) function + pub fn owner( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([141, 165, 203, 91], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `permissionedProver` (0x313df7b1) function + pub fn permissioned_prover( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([49, 61, 247, 177], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `proxiableUUID` (0x52d1902d) function + pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 209, 144, 45], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `renounceOwnership` (0x715018a6) function + pub fn renounce_ownership(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([113, 80, 24, 166], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `setPermissionedProver` (0x013fa5fc) function + pub fn set_permissioned_prover( + &self, + prover: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([1, 63, 165, 252], prover) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `setstateHistoryRetentionPeriod` (0x96c1ca61) function + pub fn setstate_history_retention_period( + &self, + history_seconds: u32, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([150, 193, 202, 97], history_seconds) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `stateHistoryCommitments` (0x02b592f3) function + pub fn state_history_commitments( + &self, + p0: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + (u64, u64, u64, ::ethers::core::types::U256), + > { + self.0 + .method_hash([2, 181, 146, 243], p0) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `stateHistoryFirstIndex` (0x2f79889d) function + pub fn state_history_first_index( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([47, 121, 136, 157], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `stateHistoryRetentionPeriod` (0xc23b9e9e) function + pub fn state_history_retention_period( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([194, 59, 158, 158], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `transferOwnership` (0xf2fde38b) function + pub fn transfer_ownership( + &self, + new_owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([242, 253, 227, 139], new_owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function + pub fn upgrade_to_and_call( + &self, + new_implementation: ::ethers::core::types::Address, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 30, 242, 134], (new_implementation, data)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `Initialized` event + pub fn initialized_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, InitializedFilter> + { + self.0.event() + } + ///Gets the contract's `NewState` event + pub fn new_state_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, NewStateFilter> { + self.0.event() + } + ///Gets the contract's `OwnershipTransferred` event + pub fn ownership_transferred_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, OwnershipTransferredFilter> + { + self.0.event() + } + ///Gets the contract's `PermissionedProverNotRequired` event + pub fn permissioned_prover_not_required_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + PermissionedProverNotRequiredFilter, + > { + self.0.event() + } + ///Gets the contract's `PermissionedProverRequired` event + pub fn permissioned_prover_required_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + PermissionedProverRequiredFilter, + > { + self.0.event() + } + ///Gets the contract's `Upgrade` event + pub fn upgrade_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradeFilter> { + self.0.event() + } + ///Gets the contract's `Upgraded` event + pub fn upgraded_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { + self.0.event() + } + /// Returns an `Event` builder for all the events of this contract. + pub fn events( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LightClientArbitrumEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for LightClientArbitrum + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `AddressEmptyCode` with signature `AddressEmptyCode(address)` and selector `0x9996b315` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AddressEmptyCode", abi = "AddressEmptyCode(address)")] + pub struct AddressEmptyCode { + pub target: ::ethers::core::types::Address, + } + ///Custom Error type `ERC1967InvalidImplementation` with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "ERC1967InvalidImplementation", + abi = "ERC1967InvalidImplementation(address)" + )] + pub struct ERC1967InvalidImplementation { + pub implementation: ::ethers::core::types::Address, + } + ///Custom Error type `ERC1967NonPayable` with signature `ERC1967NonPayable()` and selector `0xb398979f` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "ERC1967NonPayable", abi = "ERC1967NonPayable()")] + pub struct ERC1967NonPayable; + ///Custom Error type `FailedInnerCall` with signature `FailedInnerCall()` and selector `0x1425ea42` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "FailedInnerCall", abi = "FailedInnerCall()")] + pub struct FailedInnerCall; + ///Custom Error type `InsufficientSnapshotHistory` with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InsufficientSnapshotHistory", + abi = "InsufficientSnapshotHistory()" + )] + pub struct InsufficientSnapshotHistory; + ///Custom Error type `InvalidAddress` with signature `InvalidAddress()` and selector `0xe6c4247b` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidAddress", abi = "InvalidAddress()")] + pub struct InvalidAddress; + ///Custom Error type `InvalidArgs` with signature `InvalidArgs()` and selector `0xa1ba07ee` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidArgs", abi = "InvalidArgs()")] + pub struct InvalidArgs; + ///Custom Error type `InvalidHotShotBlockForCommitmentCheck` with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidHotShotBlockForCommitmentCheck", + abi = "InvalidHotShotBlockForCommitmentCheck()" + )] + pub struct InvalidHotShotBlockForCommitmentCheck; + ///Custom Error type `InvalidInitialization` with signature `InvalidInitialization()` and selector `0xf92ee8a9` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidInitialization", abi = "InvalidInitialization()")] + pub struct InvalidInitialization; + ///Custom Error type `InvalidMaxStateHistory` with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidMaxStateHistory", abi = "InvalidMaxStateHistory()")] + pub struct InvalidMaxStateHistory; + ///Custom Error type `InvalidProof` with signature `InvalidProof()` and selector `0x09bde339` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidProof", abi = "InvalidProof()")] + pub struct InvalidProof; + ///Custom Error type `NoChangeRequired` with signature `NoChangeRequired()` and selector `0xa863aec9` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NoChangeRequired", abi = "NoChangeRequired()")] + pub struct NoChangeRequired; + ///Custom Error type `NotInitializing` with signature `NotInitializing()` and selector `0xd7e6bcf8` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NotInitializing", abi = "NotInitializing()")] + pub struct NotInitializing; + ///Custom Error type `OutdatedState` with signature `OutdatedState()` and selector `0x051c46ef` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OutdatedState", abi = "OutdatedState()")] + pub struct OutdatedState; + ///Custom Error type `OwnableInvalidOwner` with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OwnableInvalidOwner", abi = "OwnableInvalidOwner(address)")] + pub struct OwnableInvalidOwner { + pub owner: ::ethers::core::types::Address, + } + ///Custom Error type `OwnableUnauthorizedAccount` with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "OwnableUnauthorizedAccount", + abi = "OwnableUnauthorizedAccount(address)" + )] + pub struct OwnableUnauthorizedAccount { + pub account: ::ethers::core::types::Address, + } + ///Custom Error type `ProverNotPermissioned` with signature `ProverNotPermissioned()` and selector `0xa3a64780` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "ProverNotPermissioned", abi = "ProverNotPermissioned()")] + pub struct ProverNotPermissioned; + ///Custom Error type `UUPSUnauthorizedCallContext` with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "UUPSUnauthorizedCallContext", + abi = "UUPSUnauthorizedCallContext()" + )] + pub struct UUPSUnauthorizedCallContext; + ///Custom Error type `UUPSUnsupportedProxiableUUID` with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "UUPSUnsupportedProxiableUUID", + abi = "UUPSUnsupportedProxiableUUID(bytes32)" + )] + pub struct UUPSUnsupportedProxiableUUID { + pub slot: [u8; 32], + } + ///Custom Error type `WrongStakeTableUsed` with signature `WrongStakeTableUsed()` and selector `0x51618089` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "WrongStakeTableUsed", abi = "WrongStakeTableUsed()")] + pub struct WrongStakeTableUsed; + ///Container type for all of the contract's custom errors + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LightClientArbitrumErrors { + AddressEmptyCode(AddressEmptyCode), + ERC1967InvalidImplementation(ERC1967InvalidImplementation), + ERC1967NonPayable(ERC1967NonPayable), + FailedInnerCall(FailedInnerCall), + InsufficientSnapshotHistory(InsufficientSnapshotHistory), + InvalidAddress(InvalidAddress), + InvalidArgs(InvalidArgs), + InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck), + InvalidInitialization(InvalidInitialization), + InvalidMaxStateHistory(InvalidMaxStateHistory), + InvalidProof(InvalidProof), + NoChangeRequired(NoChangeRequired), + NotInitializing(NotInitializing), + OutdatedState(OutdatedState), + OwnableInvalidOwner(OwnableInvalidOwner), + OwnableUnauthorizedAccount(OwnableUnauthorizedAccount), + ProverNotPermissioned(ProverNotPermissioned), + UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext), + UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID), + WrongStakeTableUsed(WrongStakeTableUsed), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for LightClientArbitrumErrors { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + <::std::string::String as ::ethers::core::abi::AbiDecode>::decode(data) + { + return Ok(Self::RevertString(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::AddressEmptyCode(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ERC1967InvalidImplementation(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ERC1967NonPayable(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::FailedInnerCall(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InsufficientSnapshotHistory(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidAddress(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidArgs(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::InvalidHotShotBlockForCommitmentCheck(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidInitialization(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidMaxStateHistory(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidProof(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::NoChangeRequired(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NotInitializing(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OutdatedState(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::OwnableInvalidOwner(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::OwnableUnauthorizedAccount(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ProverNotPermissioned(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UUPSUnauthorizedCallContext(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UUPSUnsupportedProxiableUUID(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::WrongStakeTableUsed(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LightClientArbitrumErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AddressEmptyCode(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ERC1967InvalidImplementation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ERC1967NonPayable(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::FailedInnerCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InsufficientSnapshotHistory(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidArgs(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidHotShotBlockForCommitmentCheck(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidInitialization(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidMaxStateHistory(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidProof(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NoChangeRequired(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NotInitializing(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OutdatedState(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnableInvalidOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::OwnableUnauthorizedAccount(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ProverNotPermissioned(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UUPSUnauthorizedCallContext(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UUPSUnsupportedProxiableUUID(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::WrongStakeTableUsed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for LightClientArbitrumErrors { + fn valid_selector(selector: [u8; 4]) -> bool { + match selector { + [0x08, 0xc3, 0x79, 0xa0] => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => true, + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } + _ => false, + } + } + } + impl ::core::fmt::Display for LightClientArbitrumErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddressEmptyCode(element) => ::core::fmt::Display::fmt(element, f), + Self::ERC1967InvalidImplementation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ERC1967NonPayable(element) => ::core::fmt::Display::fmt(element, f), + Self::FailedInnerCall(element) => ::core::fmt::Display::fmt(element, f), + Self::InsufficientSnapshotHistory(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidArgs(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidHotShotBlockForCommitmentCheck(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::InvalidInitialization(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidMaxStateHistory(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidProof(element) => ::core::fmt::Display::fmt(element, f), + Self::NoChangeRequired(element) => ::core::fmt::Display::fmt(element, f), + Self::NotInitializing(element) => ::core::fmt::Display::fmt(element, f), + Self::OutdatedState(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnableInvalidOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnableUnauthorizedAccount(element) => ::core::fmt::Display::fmt(element, f), + Self::ProverNotPermissioned(element) => ::core::fmt::Display::fmt(element, f), + Self::UUPSUnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), + Self::UUPSUnsupportedProxiableUUID(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::WrongStakeTableUsed(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for LightClientArbitrumErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: AddressEmptyCode) -> Self { + Self::AddressEmptyCode(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: ERC1967InvalidImplementation) -> Self { + Self::ERC1967InvalidImplementation(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: ERC1967NonPayable) -> Self { + Self::ERC1967NonPayable(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: FailedInnerCall) -> Self { + Self::FailedInnerCall(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: InsufficientSnapshotHistory) -> Self { + Self::InsufficientSnapshotHistory(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: InvalidAddress) -> Self { + Self::InvalidAddress(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: InvalidArgs) -> Self { + Self::InvalidArgs(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self { + Self::InvalidHotShotBlockForCommitmentCheck(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: InvalidInitialization) -> Self { + Self::InvalidInitialization(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: InvalidMaxStateHistory) -> Self { + Self::InvalidMaxStateHistory(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: InvalidProof) -> Self { + Self::InvalidProof(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: NoChangeRequired) -> Self { + Self::NoChangeRequired(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: NotInitializing) -> Self { + Self::NotInitializing(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: OutdatedState) -> Self { + Self::OutdatedState(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: OwnableInvalidOwner) -> Self { + Self::OwnableInvalidOwner(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: OwnableUnauthorizedAccount) -> Self { + Self::OwnableUnauthorizedAccount(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: ProverNotPermissioned) -> Self { + Self::ProverNotPermissioned(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: UUPSUnauthorizedCallContext) -> Self { + Self::UUPSUnauthorizedCallContext(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: UUPSUnsupportedProxiableUUID) -> Self { + Self::UUPSUnsupportedProxiableUUID(value) + } + } + impl ::core::convert::From for LightClientArbitrumErrors { + fn from(value: WrongStakeTableUsed) -> Self { + Self::WrongStakeTableUsed(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Initialized", abi = "Initialized(uint64)")] + pub struct InitializedFilter { + pub version: u64, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "NewState", abi = "NewState(uint64,uint64,uint256)")] + pub struct NewStateFilter { + #[ethevent(indexed)] + pub view_num: u64, + #[ethevent(indexed)] + pub block_height: u64, + pub block_comm_root: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "OwnershipTransferred", + abi = "OwnershipTransferred(address,address)" + )] + pub struct OwnershipTransferredFilter { + #[ethevent(indexed)] + pub previous_owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub new_owner: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "PermissionedProverNotRequired", + abi = "PermissionedProverNotRequired()" + )] + pub struct PermissionedProverNotRequiredFilter; + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "PermissionedProverRequired", + abi = "PermissionedProverRequired(address)" + )] + pub struct PermissionedProverRequiredFilter { + pub permissioned_prover: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Upgrade", abi = "Upgrade(address)")] + pub struct UpgradeFilter { + pub implementation: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] + pub struct UpgradedFilter { + #[ethevent(indexed)] + pub implementation: ::ethers::core::types::Address, + } + ///Container type for all of the contract's events + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum LightClientArbitrumEvents { + InitializedFilter(InitializedFilter), + NewStateFilter(NewStateFilter), + OwnershipTransferredFilter(OwnershipTransferredFilter), + PermissionedProverNotRequiredFilter(PermissionedProverNotRequiredFilter), + PermissionedProverRequiredFilter(PermissionedProverRequiredFilter), + UpgradeFilter(UpgradeFilter), + UpgradedFilter(UpgradedFilter), + } + impl ::ethers::contract::EthLogDecode for LightClientArbitrumEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = InitializedFilter::decode_log(log) { + return Ok(LightClientArbitrumEvents::InitializedFilter(decoded)); + } + if let Ok(decoded) = NewStateFilter::decode_log(log) { + return Ok(LightClientArbitrumEvents::NewStateFilter(decoded)); + } + if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { + return Ok(LightClientArbitrumEvents::OwnershipTransferredFilter( + decoded, + )); + } + if let Ok(decoded) = PermissionedProverNotRequiredFilter::decode_log(log) { + return Ok(LightClientArbitrumEvents::PermissionedProverNotRequiredFilter(decoded)); + } + if let Ok(decoded) = PermissionedProverRequiredFilter::decode_log(log) { + return Ok(LightClientArbitrumEvents::PermissionedProverRequiredFilter( + decoded, + )); + } + if let Ok(decoded) = UpgradeFilter::decode_log(log) { + return Ok(LightClientArbitrumEvents::UpgradeFilter(decoded)); + } + if let Ok(decoded) = UpgradedFilter::decode_log(log) { + return Ok(LightClientArbitrumEvents::UpgradedFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for LightClientArbitrumEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::InitializedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::NewStateFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnershipTransferredFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::PermissionedProverNotRequiredFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::PermissionedProverRequiredFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::UpgradeFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LightClientArbitrumEvents { + fn from(value: InitializedFilter) -> Self { + Self::InitializedFilter(value) + } + } + impl ::core::convert::From for LightClientArbitrumEvents { + fn from(value: NewStateFilter) -> Self { + Self::NewStateFilter(value) + } + } + impl ::core::convert::From for LightClientArbitrumEvents { + fn from(value: OwnershipTransferredFilter) -> Self { + Self::OwnershipTransferredFilter(value) + } + } + impl ::core::convert::From for LightClientArbitrumEvents { + fn from(value: PermissionedProverNotRequiredFilter) -> Self { + Self::PermissionedProverNotRequiredFilter(value) + } + } + impl ::core::convert::From for LightClientArbitrumEvents { + fn from(value: PermissionedProverRequiredFilter) -> Self { + Self::PermissionedProverRequiredFilter(value) + } + } + impl ::core::convert::From for LightClientArbitrumEvents { + fn from(value: UpgradeFilter) -> Self { + Self::UpgradeFilter(value) + } + } + impl ::core::convert::From for LightClientArbitrumEvents { + fn from(value: UpgradedFilter) -> Self { + Self::UpgradedFilter(value) + } + } + ///Container type for all input parameters for the `UPGRADE_INTERFACE_VERSION` function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "UPGRADE_INTERFACE_VERSION", + abi = "UPGRADE_INTERFACE_VERSION()" + )] + pub struct UpgradeInterfaceVersionCall; + ///Container type for all input parameters for the `currentBlockNumber` function with signature `currentBlockNumber()` and selector `0x378ec23b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "currentBlockNumber", abi = "currentBlockNumber()")] + pub struct CurrentBlockNumberCall; + ///Container type for all input parameters for the `disablePermissionedProverMode` function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "disablePermissionedProverMode", + abi = "disablePermissionedProverMode()" + )] + pub struct DisablePermissionedProverModeCall; + ///Container type for all input parameters for the `finalizedState` function with signature `finalizedState()` and selector `0x9fdb54a7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "finalizedState", abi = "finalizedState()")] + pub struct FinalizedStateCall; + ///Container type for all input parameters for the `genesisStakeTableState` function with signature `genesisStakeTableState()` and selector `0x426d3194` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "genesisStakeTableState", abi = "genesisStakeTableState()")] + pub struct GenesisStakeTableStateCall; + ///Container type for all input parameters for the `genesisState` function with signature `genesisState()` and selector `0xd24d933d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "genesisState", abi = "genesisState()")] + pub struct GenesisStateCall; + ///Container type for all input parameters for the `getHotShotCommitment` function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getHotShotCommitment", abi = "getHotShotCommitment(uint256)")] + pub struct GetHotShotCommitmentCall { + pub hot_shot_block_height: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getStateHistoryCount` function with signature `getStateHistoryCount()` and selector `0xf9e50d19` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getStateHistoryCount", abi = "getStateHistoryCount()")] + pub struct GetStateHistoryCountCall; + ///Container type for all input parameters for the `getVersion` function with signature `getVersion()` and selector `0x0d8e6e2c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getVersion", abi = "getVersion()")] + pub struct GetVersionCall; + ///Container type for all input parameters for the `initialize` function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "initialize", + abi = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)" + )] + pub struct InitializeCall { + pub genesis: LightClientState, + pub genesis_stake_table_state: StakeTableState, + pub state_history_retention_period: u32, + pub owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `isPermissionedProverEnabled` function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "isPermissionedProverEnabled", + abi = "isPermissionedProverEnabled()" + )] + pub struct IsPermissionedProverEnabledCall; + ///Container type for all input parameters for the `lagOverEscapeHatchThreshold` function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "lagOverEscapeHatchThreshold", + abi = "lagOverEscapeHatchThreshold(uint256,uint256)" + )] + pub struct LagOverEscapeHatchThresholdCall { + pub block_number: ::ethers::core::types::U256, + pub block_threshold: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `newFinalizedState` function with signature `newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x2063d4f7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + )] + #[ethcall( + name = "newFinalizedState", + abi = "newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))" + )] + pub struct NewFinalizedStateCall { + pub new_state: LightClientState, + pub proof: PlonkProof, + } + ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "owner", abi = "owner()")] + pub struct OwnerCall; + ///Container type for all input parameters for the `permissionedProver` function with signature `permissionedProver()` and selector `0x313df7b1` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "permissionedProver", abi = "permissionedProver()")] + pub struct PermissionedProverCall; + ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] + pub struct ProxiableUUIDCall; + ///Container type for all input parameters for the `renounceOwnership` function with signature `renounceOwnership()` and selector `0x715018a6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] + pub struct RenounceOwnershipCall; + ///Container type for all input parameters for the `setPermissionedProver` function with signature `setPermissionedProver(address)` and selector `0x013fa5fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setPermissionedProver", abi = "setPermissionedProver(address)")] + pub struct SetPermissionedProverCall { + pub prover: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `setstateHistoryRetentionPeriod` function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "setstateHistoryRetentionPeriod", + abi = "setstateHistoryRetentionPeriod(uint32)" + )] + pub struct SetstateHistoryRetentionPeriodCall { + pub history_seconds: u32, + } + ///Container type for all input parameters for the `stateHistoryCommitments` function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "stateHistoryCommitments", + abi = "stateHistoryCommitments(uint256)" + )] + pub struct StateHistoryCommitmentsCall(pub ::ethers::core::types::U256); + ///Container type for all input parameters for the `stateHistoryFirstIndex` function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "stateHistoryFirstIndex", abi = "stateHistoryFirstIndex()")] + pub struct StateHistoryFirstIndexCall; + ///Container type for all input parameters for the `stateHistoryRetentionPeriod` function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "stateHistoryRetentionPeriod", + abi = "stateHistoryRetentionPeriod()" + )] + pub struct StateHistoryRetentionPeriodCall; + ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] + pub struct TransferOwnershipCall { + pub new_owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] + pub struct UpgradeToAndCallCall { + pub new_implementation: ::ethers::core::types::Address, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, serde::Serialize, serde::Deserialize)] + pub enum LightClientArbitrumCalls { + UpgradeInterfaceVersion(UpgradeInterfaceVersionCall), + CurrentBlockNumber(CurrentBlockNumberCall), + DisablePermissionedProverMode(DisablePermissionedProverModeCall), + FinalizedState(FinalizedStateCall), + GenesisStakeTableState(GenesisStakeTableStateCall), + GenesisState(GenesisStateCall), + GetHotShotCommitment(GetHotShotCommitmentCall), + GetStateHistoryCount(GetStateHistoryCountCall), + GetVersion(GetVersionCall), + Initialize(InitializeCall), + IsPermissionedProverEnabled(IsPermissionedProverEnabledCall), + LagOverEscapeHatchThreshold(LagOverEscapeHatchThresholdCall), + NewFinalizedState(NewFinalizedStateCall), + Owner(OwnerCall), + PermissionedProver(PermissionedProverCall), + ProxiableUUID(ProxiableUUIDCall), + RenounceOwnership(RenounceOwnershipCall), + SetPermissionedProver(SetPermissionedProverCall), + SetstateHistoryRetentionPeriod(SetstateHistoryRetentionPeriodCall), + StateHistoryCommitments(StateHistoryCommitmentsCall), + StateHistoryFirstIndex(StateHistoryFirstIndexCall), + StateHistoryRetentionPeriod(StateHistoryRetentionPeriodCall), + TransferOwnership(TransferOwnershipCall), + UpgradeToAndCall(UpgradeToAndCallCall), + } + impl ::ethers::core::abi::AbiDecode for LightClientArbitrumCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UpgradeInterfaceVersion(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CurrentBlockNumber(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DisablePermissionedProverMode(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::FinalizedState(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GenesisStakeTableState(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::GenesisState(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetHotShotCommitment(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetStateHistoryCount(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::GetVersion(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialize(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsPermissionedProverEnabled(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::LagOverEscapeHatchThreshold(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::NewFinalizedState(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Owner(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::PermissionedProver(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ProxiableUUID(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::RenounceOwnership(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SetPermissionedProver(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SetstateHistoryRetentionPeriod(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::StateHistoryCommitments(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::StateHistoryFirstIndex(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::StateHistoryRetentionPeriod(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::TransferOwnership(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UpgradeToAndCall(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LightClientArbitrumCalls { + fn encode(self) -> Vec { + match self { + Self::UpgradeInterfaceVersion(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::CurrentBlockNumber(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::DisablePermissionedProverMode(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::FinalizedState(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GenesisStakeTableState(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenesisState(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetHotShotCommitment(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetStateHistoryCount(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetVersion(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsPermissionedProverEnabled(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::LagOverEscapeHatchThreshold(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NewFinalizedState(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::PermissionedProver(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RenounceOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SetPermissionedProver(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetstateHistoryRetentionPeriod(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::StateHistoryCommitments(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::StateHistoryFirstIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::StateHistoryRetentionPeriod(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TransferOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for LightClientArbitrumCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::UpgradeInterfaceVersion(element) => ::core::fmt::Display::fmt(element, f), + Self::CurrentBlockNumber(element) => ::core::fmt::Display::fmt(element, f), + Self::DisablePermissionedProverMode(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::FinalizedState(element) => ::core::fmt::Display::fmt(element, f), + Self::GenesisStakeTableState(element) => ::core::fmt::Display::fmt(element, f), + Self::GenesisState(element) => ::core::fmt::Display::fmt(element, f), + Self::GetHotShotCommitment(element) => ::core::fmt::Display::fmt(element, f), + Self::GetStateHistoryCount(element) => ::core::fmt::Display::fmt(element, f), + Self::GetVersion(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), + Self::IsPermissionedProverEnabled(element) => ::core::fmt::Display::fmt(element, f), + Self::LagOverEscapeHatchThreshold(element) => ::core::fmt::Display::fmt(element, f), + Self::NewFinalizedState(element) => ::core::fmt::Display::fmt(element, f), + Self::Owner(element) => ::core::fmt::Display::fmt(element, f), + Self::PermissionedProver(element) => ::core::fmt::Display::fmt(element, f), + Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), + Self::RenounceOwnership(element) => ::core::fmt::Display::fmt(element, f), + Self::SetPermissionedProver(element) => ::core::fmt::Display::fmt(element, f), + Self::SetstateHistoryRetentionPeriod(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StateHistoryCommitments(element) => ::core::fmt::Display::fmt(element, f), + Self::StateHistoryFirstIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::StateHistoryRetentionPeriod(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: UpgradeInterfaceVersionCall) -> Self { + Self::UpgradeInterfaceVersion(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: CurrentBlockNumberCall) -> Self { + Self::CurrentBlockNumber(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: DisablePermissionedProverModeCall) -> Self { + Self::DisablePermissionedProverMode(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: FinalizedStateCall) -> Self { + Self::FinalizedState(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: GenesisStakeTableStateCall) -> Self { + Self::GenesisStakeTableState(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: GenesisStateCall) -> Self { + Self::GenesisState(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: GetHotShotCommitmentCall) -> Self { + Self::GetHotShotCommitment(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: GetStateHistoryCountCall) -> Self { + Self::GetStateHistoryCount(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: GetVersionCall) -> Self { + Self::GetVersion(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: InitializeCall) -> Self { + Self::Initialize(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: IsPermissionedProverEnabledCall) -> Self { + Self::IsPermissionedProverEnabled(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: LagOverEscapeHatchThresholdCall) -> Self { + Self::LagOverEscapeHatchThreshold(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: NewFinalizedStateCall) -> Self { + Self::NewFinalizedState(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: OwnerCall) -> Self { + Self::Owner(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: PermissionedProverCall) -> Self { + Self::PermissionedProver(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: ProxiableUUIDCall) -> Self { + Self::ProxiableUUID(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: RenounceOwnershipCall) -> Self { + Self::RenounceOwnership(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: SetPermissionedProverCall) -> Self { + Self::SetPermissionedProver(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: SetstateHistoryRetentionPeriodCall) -> Self { + Self::SetstateHistoryRetentionPeriod(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: StateHistoryCommitmentsCall) -> Self { + Self::StateHistoryCommitments(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: StateHistoryFirstIndexCall) -> Self { + Self::StateHistoryFirstIndex(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: StateHistoryRetentionPeriodCall) -> Self { + Self::StateHistoryRetentionPeriod(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: TransferOwnershipCall) -> Self { + Self::TransferOwnership(value) + } + } + impl ::core::convert::From for LightClientArbitrumCalls { + fn from(value: UpgradeToAndCallCall) -> Self { + Self::UpgradeToAndCall(value) + } + } + ///Container type for all return fields from the `UPGRADE_INTERFACE_VERSION` function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct UpgradeInterfaceVersionReturn(pub ::std::string::String); + ///Container type for all return fields from the `currentBlockNumber` function with signature `currentBlockNumber()` and selector `0x378ec23b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CurrentBlockNumberReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `finalizedState` function with signature `finalizedState()` and selector `0x9fdb54a7` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct FinalizedStateReturn { + pub view_num: u64, + pub block_height: u64, + pub block_comm_root: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `genesisStakeTableState` function with signature `genesisStakeTableState()` and selector `0x426d3194` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GenesisStakeTableStateReturn { + pub threshold: ::ethers::core::types::U256, + pub bls_key_comm: ::ethers::core::types::U256, + pub schnorr_key_comm: ::ethers::core::types::U256, + pub amount_comm: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `genesisState` function with signature `genesisState()` and selector `0xd24d933d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GenesisStateReturn { + pub view_num: u64, + pub block_height: u64, + pub block_comm_root: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `getHotShotCommitment` function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetHotShotCommitmentReturn { + pub hot_shot_block_comm_root: ::ethers::core::types::U256, + pub hotshot_block_height: u64, + } + ///Container type for all return fields from the `getStateHistoryCount` function with signature `getStateHistoryCount()` and selector `0xf9e50d19` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetStateHistoryCountReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `getVersion` function with signature `getVersion()` and selector `0x0d8e6e2c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetVersionReturn { + pub major_version: u8, + pub minor_version: u8, + pub patch_version: u8, + } + ///Container type for all return fields from the `isPermissionedProverEnabled` function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsPermissionedProverEnabledReturn(pub bool); + ///Container type for all return fields from the `lagOverEscapeHatchThreshold` function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct LagOverEscapeHatchThresholdReturn(pub bool); + ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct OwnerReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `permissionedProver` function with signature `permissionedProver()` and selector `0x313df7b1` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct PermissionedProverReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ProxiableUUIDReturn(pub [u8; 32]); + ///Container type for all return fields from the `stateHistoryCommitments` function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct StateHistoryCommitmentsReturn { + pub l_1_block_height: u64, + pub l_1_block_timestamp: u64, + pub hot_shot_block_height: u64, + pub hot_shot_block_comm_root: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `stateHistoryFirstIndex` function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct StateHistoryFirstIndexReturn(pub u64); + ///Container type for all return fields from the `stateHistoryRetentionPeriod` function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct StateHistoryRetentionPeriodReturn(pub u32); +} diff --git a/contracts/broadcast/LightClientArb.s.sol/421614/run-latest.json b/contracts/broadcast/LightClientArb.s.sol/421614/run-latest.json new file mode 100644 index 000000000..73675365a --- /dev/null +++ b/contracts/broadcast/LightClientArb.s.sol/421614/run-latest.json @@ -0,0 +1,263 @@ +{ + "transactions": [ + { + "hash": "0xc8bd6be597bd34f8bcf5704c80814b870656bdfc7d398525990b82a781e9903c", + "transactionType": "CREATE", + "contractName": "LightClientArbitrum", + "contractAddress": "0x9ba96998a54340241cd0778feb78f30427b5c080", + "function": null, + "arguments": null, + "transaction": { + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "gas": "0x32ee06", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000030565b6200002a62000030565b620000e4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000e15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a7e6200010e600039600081816111480152818161117101526112f00152612a7e6000f3fe60806040526004361061014b5760003560e01c8063826e41fc116100b6578063ad3cb1cc1161006f578063ad3cb1cc14610488578063c23b9e9e146104c6578063d24d933d146104ff578063e03033011461052f578063f2fde38b1461054f578063f9e50d191461056f57600080fd5b8063826e41fc1461034c5780638584d23f146103785780638da5cb5b146103b557806396c1ca61146103f25780639baa3cc9146104125780639fdb54a71461043257600080fd5b8063378ec23b11610108578063378ec23b14610294578063426d3194146102b75780634f1ef286146102fa57806352d1902d1461030d57806369cc6a0414610322578063715018a61461033757600080fd5b8063013fa5fc1461015057806302b592f3146101725780630d8e6e2c146101d05780632063d4f7146101fd5780632f79889d1461021d578063313df7b11461025c575b600080fd5b34801561015c57600080fd5b5061017061016b366004612004565b610584565b005b34801561017e57600080fd5b5061019261018d36600461201f565b610637565b6040516101c794939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101dc57600080fd5b506040805160018152600060208201819052918101919091526060016101c7565b34801561020957600080fd5b50610170610218366004612173565b610682565b34801561022957600080fd5b5060085461024490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101c7565b34801561026857600080fd5b5060085461027c906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b3480156102a057600080fd5b506102a96107de565b6040519081526020016101c7565b3480156102c357600080fd5b506000546001546002546003546102da9392919084565b6040805194855260208501939093529183015260608201526080016101c7565b610170610308366004612327565b610848565b34801561031957600080fd5b506102a9610867565b34801561032e57600080fd5b50610170610884565b34801561034357600080fd5b506101706108f3565b34801561035857600080fd5b506008546001600160a01b031615155b60405190151581526020016101c7565b34801561038457600080fd5b5061039861039336600461201f565b610905565b604080519283526001600160401b039091166020830152016101c7565b3480156103c157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661027c565b3480156103fe57600080fd5b5061017061040d3660046123e0565b610a38565b34801561041e57600080fd5b5061017061042d3660046123fb565b610ac1565b34801561043e57600080fd5b50600654600754610462916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101c7565b34801561049457600080fd5b506104b9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101c791906124cc565b3480156104d257600080fd5b506008546104ea90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101c7565b34801561050b57600080fd5b50600454600554610462916001600160401b0380821692600160401b909204169083565b34801561053b57600080fd5b5061036861054a3660046124ff565b610be5565b34801561055b57600080fd5b5061017061056a366004612004565b610d4b565b34801561057b57600080fd5b506009546102a9565b61058c610d8e565b6001600160a01b0381166105b35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105e25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061064757600080fd5b6000918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6008546001600160a01b0316151580156106a757506008546001600160a01b03163314155b156106c5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b0391821691161115806106fe575060065460208301516001600160401b03600160401b9092048216911611155b1561071c5760405163051c46ef60e01b815260040160405180910390fd5b6107298260400151610de9565b6107338282610e59565b81516006805460208501516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604082015160075561078161077a6107de565b4284610f51565b81602001516001600160401b031682600001516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107d291815260200190565b60405180910390a35050565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190612521565b905090565b61085061113d565b610859826111e2565b6108638282611223565b5050565b60006108716112e5565b50600080516020612a5283398151915290565b61088c610d8e565b6008546001600160a01b0316156108d857600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108fb610d8e565b6108f1600061132e565b6009805460009182919061091a600183612550565b8154811061092a5761092a612563565b6000918252602090912060029091020154600160801b90046001600160401b031684111561096b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a3157846009828154811061099b5761099b612563565b6000918252602090912060029091020154600160801b90046001600160401b031610610a2957600981815481106109d4576109d4612563565b906000526020600020906002020160010154600982815481106109f9576109f9612563565b906000526020600020906002020160000160109054906101000a90046001600160401b0316935093505050915091565b60010161097f565b5050915091565b610a40610d8e565b610e108163ffffffff161080610a5f57506301e133808163ffffffff16115b80610a7d575060085463ffffffff600160a01b909104811690821611155b15610a9b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610b065750825b90506000826001600160401b03166001148015610b225750303b155b905081158015610b30575080155b15610b4e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b7857845460ff60401b1916600160401b1785555b610b818661139f565b610b896113b0565b610b948989896113b8565b8315610bda57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600954600090610bf36107de565b841180610bfe575080155b80610c495750600854600980549091600160c01b90046001600160401b0316908110610c2c57610c2c612563565b60009182526020909120600290910201546001600160401b031684105b15610c675760405163b0b4387760e01b815260040160405180910390fd5b60008080610c76600185612550565b90505b81610d1457600854600160c01b90046001600160401b03168110610d14578660098281548110610cab57610cab612563565b60009182526020909120600290910201546001600160401b031611610d02576001915060098181548110610ce157610ce1612563565b60009182526020909120600290910201546001600160401b03169250610d14565b80610d0c81612579565b915050610c79565b81610d325760405163b0b4387760e01b815260040160405180910390fd5b85610d3d8489612550565b119450505050505b92915050565b610d53610d8e565b6001600160a01b038116610d8257604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610d8b8161132e565b50565b33610dc07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108f15760405163118cdaa760e01b8152336004820152602401610d79565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108635760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d79565b6000610e636114e5565b9050610e6d611d3d565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a083015260005460c08301525163ce537a7760e01b815273085a1ec0d51f4541d81a442a0df4c9e9c70d7d1e9063ce537a7790610eed90859085908890600401612797565b602060405180830381865af4158015610f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2e91906129c6565b610f4b576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590610fc7575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110610f9157610f91612563565b6000918252602090912060029091020154610fbc90600160401b90046001600160401b0316846129e8565b6001600160401b0316115b1561105b57600854600980549091600160c01b90046001600160401b0316908110610ff457610ff4612563565b60009182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861103583612a0f565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b0394851681529284166020808501918252830151851684830190815292909101516060840190815260098054600181018255600091909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806111c457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111b8600080516020612a52833981519152546001600160a01b031690565b6001600160a01b031614155b156108f15760405163703e46dd60e11b815260040160405180910390fd5b6111ea610d8e565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161062c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561127d575060408051601f3d908101601f1916820190925261127a91810190612521565b60015b6112a557604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d79565b600080516020612a5283398151915281146112d657604051632a87526960e21b815260048101829052602401610d79565b6112e08383611b14565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108f15760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6113a7611b6a565b610d8b81611bb3565b6108f1611b6a565b82516001600160401b03161515806113dc575060208301516001600160401b031615155b806113e957506020820151155b806113f657506040820151155b8061140357506060820151155b8061140d57508151155b8061141f5750610e108163ffffffff16105b8061143357506301e133808163ffffffff16115b15611451576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b03199384169190951690811785179093556040968701516005819055865160005590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6114ed611d5b565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611b1d82611bbb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b62576112e08282611c20565b610863611c96565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108f157604051631afcd79f60e31b815260040160405180910390fd5b610d53611b6a565b806001600160a01b03163b600003611bf157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d79565b600080516020612a5283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c3d9190612a35565b600060405180830381855af49150503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b5091509150611c8d858383611cb5565b95945050505050565b34156108f15760405163b398979f60e01b815260040160405180910390fd5b606082611cca57611cc582611d14565b611d0d565b8151158015611ce157506001600160a01b0384163b155b15611d0a57604051639996b31560e01b81526001600160a01b0385166004820152602401610d79565b50805b9392505050565b805115611d245780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060e001604052806007906020820280368337509192915050565b604051806102c001604052806000815260200160008152602001611d92604051806040016040528060008152602001600081525090565b8152602001611db4604051806040016040528060008152602001600081525090565b8152602001611dd6604051806040016040528060008152602001600081525090565b8152602001611df8604051806040016040528060008152602001600081525090565b8152602001611e1a604051806040016040528060008152602001600081525090565b8152602001611e3c604051806040016040528060008152602001600081525090565b8152602001611e5e604051806040016040528060008152602001600081525090565b8152602001611e80604051806040016040528060008152602001600081525090565b8152602001611ea2604051806040016040528060008152602001600081525090565b8152602001611ec4604051806040016040528060008152602001600081525090565b8152602001611ee6604051806040016040528060008152602001600081525090565b8152602001611f08604051806040016040528060008152602001600081525090565b8152602001611f2a604051806040016040528060008152602001600081525090565b8152602001611f4c604051806040016040528060008152602001600081525090565b8152602001611f6e604051806040016040528060008152602001600081525090565b8152602001611f90604051806040016040528060008152602001600081525090565b8152602001611fb2604051806040016040528060008152602001600081525090565b8152602001611fd4604051806040016040528060008152602001600081525090565b815260006020820181905260409091015290565b80356001600160a01b0381168114611fff57600080fd5b919050565b60006020828403121561201657600080fd5b611d0d82611fe8565b60006020828403121561203157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b038111828210171561207157612071612038565b60405290565b604051601f8201601f191681016001600160401b038111828210171561209f5761209f612038565b604052919050565b80356001600160401b0381168114611fff57600080fd5b6000606082840312156120d057600080fd5b604051606081018181106001600160401b03821117156120f2576120f2612038565b604052905080612101836120a7565b815261210f602084016120a7565b6020820152604083013560408201525092915050565b60006040828403121561213757600080fd5b604051604081018181106001600160401b038211171561215957612159612038565b604052823581526020928301359281019290925250919050565b6000808284036104e081121561218857600080fd5b61219285856120be565b925061048080605f19830112156121a857600080fd5b6121b061204e565b91506121bf8660608701612125565b82526121ce8660a08701612125565b60208301526121e08660e08701612125565b60408301526101206121f487828801612125565b606084015261016061220888828901612125565b60808501526101a061221c89828a01612125565b60a08601526101e06122308a828b01612125565b60c08701526102206122448b828c01612125565b60e08801526102606122588c828d01612125565b6101008901526102a061226d8d828e01612125565b878a015261227f8d6102e08e01612125565b6101408a01526122938d6103208e01612125565b868a01526122a58d6103608e01612125565b6101808a01526103a08c0135948901949094526103c08b01356101c08901526103e08b0135928801929092526104008a01356102008801526104208a013590870152610440890135610240870152610460890135908601529287013561028085015250506104a0850135908201526104c0909301356102c08401525092909150565b6000806040838503121561233a57600080fd5b61234383611fe8565b91506020808401356001600160401b038082111561236057600080fd5b818601915086601f83011261237457600080fd5b81358181111561238657612386612038565b612398601f8201601f19168501612077565b915080825287848285010111156123ae57600080fd5b80848401858401376000848284010152508093505050509250929050565b803563ffffffff81168114611fff57600080fd5b6000602082840312156123f257600080fd5b611d0d826123cc565b60008060008084860361012081121561241357600080fd5b61241d87876120be565b94506080605f198201121561243157600080fd5b50604051608081018181106001600160401b038211171561245457612454612038565b8060405250606086013581526080860135602082015260a0860135604082015260c086013560608201528093505061248e60e086016123cc565b915061249d6101008601611fe8565b905092959194509250565b60005b838110156124c35781810151838201526020016124ab565b50506000910152565b60208152600082518060208401526124eb8160408501602087016124a8565b601f01601f19169190910160400192915050565b6000806040838503121561251257600080fd5b50508035926020909101359150565b60006020828403121561253357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d4557610d4561253a565b634e487b7160e01b600052603260045260246000fd5b6000816125885761258861253a565b506000190190565b8060005b6007811015610f4b578151845260209384019390910190600101612594565b6125c882825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e084015250608081015161010061262b8185018380518252602090810151910152565b60a0830151915061014061264b8186018480518252602090810151910152565b60c0840151925061018061266b8187018580518252602090810151910152565b60e085015193506101c061268b8188018680518252602090810151910152565b928501519350610200926126ab8785018680518252602090810151910152565b61012086015194506102406126cc8189018780518252602090810151910152565b928601519450610280926126ec8885018780518252602090810151910152565b61016087015195506102c061270d818a018880518252602090810151910152565b9287015180516103008a0152602001516103208901526101a0870151610340890152908601516103608801526101e0860151610380880152928501516103a08701526102208501516103c0870152918401516103e08601526102608401516104008601528301516104208501526102a0830151610440850152909101516104609092019190915250565b6000610a6082019050845182526020850151602083015260408501516127ca604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a08501516101006128178185018380518252602090810151910152565b60c087015191506101406128378186018480518252602090810151910152565b60e088015192506101806128578187018580518252602090810151910152565b9188015192506101c0916128778684018580518252602090810151910152565b61012089015193506102006128988188018680518252602090810151910152565b918901519350610240916128b88784018680518252602090810151910152565b6101608a015194506102806128d98189018780518252602090810151910152565b918a015180516102c08901526020908101516102e08901526101a08b015180516103008a0152810151610320890152938a015180516103408901528401516103608801526101e08a015180516103808901528401516103a088015289015180516103c08801528301516103e087015261022089015180516104008801528301516104208701529088015180516104408701528201516104608601526102608801518051610480870152909101516104a08501528601516104c0840152506102a08501516104e08301526129b0610500830185612590565b6129be6105e08301846125b3565b949350505050565b6000602082840312156129d857600080fd5b81518015158114611d0d57600080fd5b6001600160401b03828116828216039080821115612a0857612a0861253a565b5092915050565b60006001600160401b03808316818103612a2b57612a2b61253a565b6001019392505050565b60008251612a478184602087016124a8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000817000a", + "nonce": "0x2b", + "chainId": "0x66eee" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x21e0ab5833d3e2fe8efd9ffbac2865d8122c42af6a4b8830a793f4b4dae6661d", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "function": null, + "arguments": [ + "0x9BA96998A54340241Cd0778feb78F30427b5c080", + "0x9baa3cc90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000000042c7d44e1aba66c321ed2f57e750ca780fda20a282f9713bf16eb1584621d2def22ab7a4213db8a3fe8248a7d690a3bfbfb4f7d01c2c0f2cd96e03dde11f1dfd62827e417e9121e51fec895fabf72602aa63e26c9cef3651846a6b357b75356fb00000000000000000000000000000000000000000000000000000000000d2f02000000000000000000000000b22167f12c232e825d26ffbb3780e024c506664e" + ], + "transaction": { + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "gas": "0x6a8bd", + "value": "0x0", + "input": "0x60806040526040516103e13803806103e183398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b6081806103606000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea164736f6c6343000817000a0000000000000000000000009ba96998a54340241cd0778feb78f30427b5c080000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001249baa3cc90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000000042c7d44e1aba66c321ed2f57e750ca780fda20a282f9713bf16eb1584621d2def22ab7a4213db8a3fe8248a7d690a3bfbfb4f7d01c2c0f2cd96e03dde11f1dfd62827e417e9121e51fec895fabf72602aa63e26c9cef3651846a6b357b75356fb00000000000000000000000000000000000000000000000000000000000d2f02000000000000000000000000b22167f12c232e825d26ffbb3780e024c506664e00000000000000000000000000000000000000000000000000000000", + "nonce": "0x2c", + "chainId": "0x66eee" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe34e2b35ce2e9dd71acf56f37b0b71f314d10465c8f158375e955b4f11eccdd4", + "transactionType": "CALL", + "contractName": "ERC1967Proxy", + "contractAddress": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "function": null, + "arguments": null, + "transaction": { + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "to": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "gas": "0x7e03", + "value": "0x0", + "input": "0x013fa5fc000000000000000000000000c56fa6505d10bf322e01327e22479de78c3bf1ce", + "nonce": "0x2d", + "chainId": "0x66eee" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e87dff33b5529741c8fda84bb2f544234f2fe98754af514911b5a9a7c8a5bf1", + "transactionType": "CALL", + "contractName": "ERC1967Proxy", + "contractAddress": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "function": null, + "arguments": null, + "transaction": { + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "to": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "gas": "0x7e03", + "value": "0x0", + "input": "0xf2fde38b0000000000000000000000001b71dceb82925187a398604f79054e1f5891f9be", + "nonce": "0x2e", + "chainId": "0x66eee" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xee3338", + "logs": [ + { + "address": "0x9ba96998a54340241cd0778feb78f30427b5c080", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xd54d7070159f7dce625447d28f9b9bdd0b9e5314a94f8400821e2bdd4c5efc32", + "blockNumber": "0x6d5586b", + "transactionHash": "0xc8bd6be597bd34f8bcf5704c80814b870656bdfc7d398525990b82a781e9903c", + "transactionIndex": "0x6d", + "logIndex": "0xb4", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000010000002000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc8bd6be597bd34f8bcf5704c80814b870656bdfc7d398525990b82a781e9903c", + "transactionIndex": "0x6d", + "blockHash": "0xd54d7070159f7dce625447d28f9b9bdd0b9e5314a94f8400821e2bdd4c5efc32", + "blockNumber": "0x6d5586b", + "gasUsed": "0x26aaa5", + "effectiveGasPrice": "0x5f5e100", + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "to": null, + "contractAddress": "0x9ba96998a54340241cd0778feb78f30427b5c080", + "gasUsedForL1": "0x196f1", + "l1BlockNumber": "0x7233ec" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xbfe2a", + "logs": [ + { + "address": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009ba96998a54340241cd0778feb78f30427b5c080" + ], + "data": "0x", + "blockHash": "0x67ecfe8cf0257c29a130d54c1b2e21c1c3004ac3e537e17687dc54f08d83a9b8", + "blockNumber": "0x6d5586e", + "transactionHash": "0x21e0ab5833d3e2fe8efd9ffbac2865d8122c42af6a4b8830a793f4b4dae6661d", + "transactionIndex": "0xa", + "logIndex": "0xa", + "removed": false + }, + { + "address": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b22167f12c232e825d26ffbb3780e024c506664e" + ], + "data": "0x", + "blockHash": "0x67ecfe8cf0257c29a130d54c1b2e21c1c3004ac3e537e17687dc54f08d83a9b8", + "blockNumber": "0x6d5586e", + "transactionHash": "0x21e0ab5833d3e2fe8efd9ffbac2865d8122c42af6a4b8830a793f4b4dae6661d", + "transactionIndex": "0xa", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x67ecfe8cf0257c29a130d54c1b2e21c1c3004ac3e537e17687dc54f08d83a9b8", + "blockNumber": "0x6d5586e", + "transactionHash": "0x21e0ab5833d3e2fe8efd9ffbac2865d8122c42af6a4b8830a793f4b4dae6661d", + "transactionIndex": "0xa", + "logIndex": "0xc", + "removed": false + } + ], + "logsBloom": "0x00000000000000000100000000000000400080000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000080000020000000000000000000800000000000000000001000000000000400000000000000000000800000000000000000000000080000000000000002000000000000000000000000000000000000000000000080000000000000000000000000020004000000000000000000000000000000004000000000000001020000000000000000000000000200000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x21e0ab5833d3e2fe8efd9ffbac2865d8122c42af6a4b8830a793f4b4dae6661d", + "transactionIndex": "0xa", + "blockHash": "0x67ecfe8cf0257c29a130d54c1b2e21c1c3004ac3e537e17687dc54f08d83a9b8", + "blockNumber": "0x6d5586e", + "gasUsed": "0x562b1", + "effectiveGasPrice": "0x5f5e100", + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "to": null, + "contractAddress": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "gasUsedForL1": "0x4300", + "l1BlockNumber": "0x7233ec" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1ff20a", + "logs": [ + { + "address": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "topics": [ + "0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072" + ], + "data": "0x000000000000000000000000c56fa6505d10bf322e01327e22479de78c3bf1ce", + "blockHash": "0xbbb37ce067e484a7dcd4026d2ad507e0ab3a1bd2ec226e16efef0652e2e83ba0", + "blockNumber": "0x6d55870", + "transactionHash": "0xe34e2b35ce2e9dd71acf56f37b0b71f314d10465c8f158375e955b4f11eccdd4", + "transactionIndex": "0x13", + "logIndex": "0x41", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000200000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe34e2b35ce2e9dd71acf56f37b0b71f314d10465c8f158375e955b4f11eccdd4", + "transactionIndex": "0x13", + "blockHash": "0xbbb37ce067e484a7dcd4026d2ad507e0ab3a1bd2ec226e16efef0652e2e83ba0", + "blockNumber": "0x6d55870", + "gasUsed": "0x923a", + "effectiveGasPrice": "0x5f5e100", + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "to": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "contractAddress": null, + "gasUsedForL1": "0x8e6", + "l1BlockNumber": "0x7233ec" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x32aaa9", + "logs": [ + { + "address": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x000000000000000000000000b22167f12c232e825d26ffbb3780e024c506664e", + "0x0000000000000000000000001b71dceb82925187a398604f79054e1f5891f9be" + ], + "data": "0x", + "blockHash": "0x9356d5c6408430e337ff0155c0ca5fe5c9b44c29b037fd08b8e5a54462063b60", + "blockNumber": "0x6d55872", + "transactionHash": "0x7e87dff33b5529741c8fda84bb2f544234f2fe98754af514911b5a9a7c8a5bf1", + "transactionIndex": "0x32", + "logIndex": "0x37", + "removed": false + } + ], + "logsBloom": "0x00000000000000000100000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000080000000000000000000000000000000000000000000001000000000000400000000000000000000000000000000000000000000000000000000800002000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000020000000000", + "type": "0x2", + "transactionHash": "0x7e87dff33b5529741c8fda84bb2f544234f2fe98754af514911b5a9a7c8a5bf1", + "transactionIndex": "0x32", + "blockHash": "0x9356d5c6408430e337ff0155c0ca5fe5c9b44c29b037fd08b8e5a54462063b60", + "blockNumber": "0x6d55872", + "gasUsed": "0x8c26", + "effectiveGasPrice": "0x5f5e100", + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "to": "0x1e28b9ee6711bdf72b94d2159d23e93784d8f008", + "contractAddress": null, + "gasUsedForL1": "0x8e6", + "l1BlockNumber": "0x7233ec" + } + ], + "libraries": [ + "contracts/src/libraries/PlonkVerifier.sol:PlonkVerifier:0x085a1Ec0d51f4541d81a442a0Df4c9E9C70D7D1e" + ], + "pending": [], + "returns": { + "proxyAddress": { + "internal_type": "address", + "value": "0x1e28b9eE6711Bdf72b94d2159D23E93784D8F008" + }, + "lightClientState": { + "internal_type": "struct LightClient.LightClientState", + "value": "(0, 0, 1234)" + }, + "implementationAddress": { + "internal_type": "address", + "value": "0x9BA96998A54340241Cd0778feb78F30427b5c080" + } + }, + "timestamp": 1736794243, + "chain": 421614, + "commit": "9c97b7e0d" +} \ No newline at end of file diff --git a/contracts/broadcast/PlonkVerifier.s.sol/421614/run-latest.json b/contracts/broadcast/PlonkVerifier.s.sol/421614/run-latest.json new file mode 100644 index 000000000..8e4a078d7 --- /dev/null +++ b/contracts/broadcast/PlonkVerifier.s.sol/421614/run-latest.json @@ -0,0 +1,53 @@ +{ + "transactions": [ + { + "hash": "0x67b99a3df6529c18cfd17320114dc86e63579c8a6c2717f819de23e4e51a21c5", + "transactionType": "CREATE", + "contractName": "PlonkVerifier", + "contractAddress": "0x5f50c15468edad51e987e8e4c814be8453c84de4", + "function": null, + "arguments": null, + "transaction": { + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "gas": "0x290473", + "value": "0x0", + "input": "0x6122a4610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c8063ce537a7714610038575b5f80fd5b61004b610046366004612033565b61005f565b604051901515815260200160405180910390f35b5f610069826100d0565b610079835f5b602002015161020b565b61008483600161006f565b61008f83600261006f565b61009a83600361006f565b6100a583600461006f565b6100b083600561006f565b6100bb83600661006f565b6100c6848484610271565b90505b9392505050565b80516100db90610465565b6100e88160200151610465565b6100f58160400151610465565b6101028160600151610465565b61010f8160800151610465565b61011c8160a00151610465565b6101298160c00151610465565b6101368160e00151610465565b610144816101000151610465565b610152816101200151610465565b610160816101400151610465565b61016e816101600151610465565b61017c816101800151610465565b61018a816101a0015161020b565b610198816101c0015161020b565b6101a6816101e0015161020b565b6101b481610200015161020b565b6101c281610220015161020b565b6101d081610240015161020b565b6101de81610260015161020b565b6101ec81610280015161020b565b6101fa816102a0015161020b565b610208816102c0015161020b565b50565b5f8051602061227883398151915281108061026d5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064015b60405180910390fd5b5050565b5f8360200151600714610297576040516320fa9d8960e11b815260040160405180910390fd5b5f6102a3858585610513565b90505f6102b2865f0151610a73565b90505f6102c4828460a0015188610e51565b90506102e160405180604001604052805f81526020015f81525090565b604080518082019091525f80825260208201526103158761016001516103108961018001518860e00151610eae565b610f4f565b91505f806103258b88878c610ff3565b91509150610336816103108461122b565b925061034f836103108b61016001518a60a00151610eae565b60a08801516040880151602001519194505f80516020612278833981519152918290820990508160e08a015182099050610392856103108d610180015184610eae565b94505f60405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061045387826104468961122b565b61044e6112c8565b611395565b9e9d5050505050505050505050505050565b805160208201515f917f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4791159015161561049e57505050565b82516020840151826003848585860985090883828309148382108484101616935050508161050e5760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e740000000000000000006044820152606401610264565b505050565b6105536040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f5f805160206122788339815191529050604051602081015f815260fe60e01b8152865160c01b6004820152602087015160c01b600c82015261028087015160208201526102a08701516040820152600160608201527f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a60808201527f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02560a08201527f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a60c08201527f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88160e082015260e087015180516101008301526020810151610120830152506101008701518051610140830152602081015161016083015250610120870151805161018083015260208101516101a08301525061014087015180516101c083015260208101516101e083015250610160870151805161020083015260208101516102208301525061018087015180516102408301526020810151610260830152506101e0870151805161028083015260208101516102a08301525061020087015180516102c083015260208101516102e083015250610220870151805161030083015260208101516103208301525061024087015180516103408301526020810151610360830152506101a0870151805161038083015260208101516103a0830152506101c087015180516103c083015260208101516103e0830152506102608701518051610400830152602081015161042083015250604087015180516104408301526020810151610460830152506060870151805161048083015260208101516104a083015250608087015180516104c083015260208101516104e08301525060a0870151805161050083015260208101516105208301525060c08701518051610540830152602081015161056083015250855161058082015260208601516105a082015260408601516105c082015260608601516105e0820152608086015161060082015260a086015161062082015260c086015161064082015284518051610660830152602081015161068083015250602085015180516106a083015260208101516106c083015250604085015180516106e083015260208101516107008301525060608501518051610720830152602081015161074083015250608085015180516107608301526020810151610780830152505f82526107c08220825282825106606085015260208220825282825106608085015260a085015180518252602081015160208301525060608220808352838106855283818209848282099150806020870152508060408601525060c085015180518252602081015160208301525060e085015180516040830152602081015160608301525061010085015180516080830152602081015160a083015250610120850151805160c0830152602081015160e0830152506101408501518051610100830152602081015161012083015250610160822082528282510660a08501526101a085015181526101c085015160208201526101e085015160408201526102008501516060820152610220850151608082015261024085015160a082015261026085015160c082015261028085015160e08201526102a08501516101008201526102c0850151610120820152610160822082528282510660c08501526101608501518051825260208101516020830152506101808501518051604083015260208101516060830152505060a0812082810660e08501525050509392505050565b610a7b611d0e565b816201000003610bba576040518060600160405280601081526020017f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c100181526020016040518060e00160405280600181526020017eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b781526020017f2d1ba66f5941dc91017171fa69ec2bd0022a2a2d4115a009a93458fd4e26ecfb81526020017f086812a00ac43ea801669c640171203c41a496671bfbc065ac8db24d52cf31e581526020017f2d965651cdd9e4811f4e51b80ddca8a8b4a93ee17420aae6adaa01c2617c6e8581526020017f12597a56c2e438620b9041b98992ae0d4e705b780057bf7766a2767cece16e1d81526020017f02d94117cd17bcf1290fd67c01155dd40807857dff4a5a0b4dc67befa8aa34fd8152508152509050919050565b816210000003610cfa576040518060600160405280601481526020017f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c10181526020016040518060e00160405280600181526020017f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785781526020017f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd81526020017f2087ea2cd664278608fb0ebdb820907f598502c81b6690c185e2bf15cb935f4281526020017f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e081526020017f05a2c85cfc591789605cae818e37dd4161eef9aa666bec6fe4288d09e6d2341881526020017f11f70e5363258ff4f0d716a653e1dc41f1c64484d7f4b6e219d6377614a3905c8152508152509050919050565b81602003610e38576040518060600160405280600581526020017f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e75080000181526020016040518060e00160405280600181526020017f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d081526020017f21082ca216cbbf4e1c6e4f4594dd508c996dfbe1174efb98b11509c6e306460b81526020017f1277ae6415f0ef18f2ba5fb162c39eb7311f386e2d26d64401f4a25da77c253b81526020017f2b337de1c8c14f22ec9b9e2f96afef3652627366f8170a0a948dad4ac1bd5e8081526020017f2fbd4dd2976be55d1a163aa9820fb88dfac5ddce77e1872e90632027327a5ebe81526020017f107aab49e65a67f9da9cd2abf78be38bd9dc1d5db39f81de36bcfa5b4b0390438152508152509050919050565b60405163e2ef09e560e01b815260040160405180910390fd5b610e7260405180606001604052805f81526020015f81526020015f81525090565b610e7c8484611475565b808252610e8c90859085906114c6565b60208201528051610ea290859084908690611535565b60408201529392505050565b604080518082019091525f8082526020820152610ec9611d32565b8351815260208085015190820152604081018390525f60608360808460076107d05a03fa90508080610ef9575f80fd5b5080610f475760405162461bcd60e51b815260206004820152601960248201527f426e3235343a207363616c6172206d756c206661696c656421000000000000006044820152606401610264565b505092915050565b604080518082019091525f8082526020820152610f6a611d50565b8351815260208085015181830152835160408301528301516060808301919091525f908360c08460066107d05a03fa90508080610fa5575f80fd5b5080610f475760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c6564210000006044820152606401610264565b604080518082019091525f8082526020820152604080518082019091525f80825260208201525f61102687878787611683565b90505f805160206122788339815191525f611042888789611b4d565b905061104e8183612225565b60c08901516101a08801519192509081908490819083098408925061107a856103108a5f015184610eae565b955083828209905083846101c08a01518309840892506110a2866103108a6020015184610eae565b955083828209905083846101e08a01518309840892506110ca866103108a6040015184610eae565b955083828209905083846102008a01518309840892506110f2866103108a6060015184610eae565b955083828209905083846102208a015183098408925061111a866103108a6080015184610eae565b955083828209905083846102408a0151830984089250611142866103108d6040015184610eae565b955083828209905083846102608a015183098408925061116a866103108d6060015184610eae565b955083828209905083846102808a0151830984089250611192866103108d6080015184610eae565b955083828209905083846102a08a01518309840892506111ba866103108d60a0015184610eae565b95505f8a60e00151905084856102c08b01518309850893506111e4876103108b60a0015184610eae565b965061121a6112146040805180820182525f80825260209182015281518083019092526001825260029082015290565b85610eae565b975050505050505094509492505050565b604080518082019091525f8082526020820152815160208301511590151615611252575090565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516112969190612258565b6112c0907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47612225565b905292915050565b6112ef60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f805f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806114675760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c656421000000006044820152606401610264565b50151590505b949350505050565b81515f905f80516020612278833981519152908380156114b6578493505f5b828110156114aa57838586099450600101611494565b506001840393506114bd565b6001830393505b50505092915050565b5f826001036114d7575060016100c9565b815f036114e557505f6100c9565b60208401515f80516020612278833981519152905f908281860990508580156115135760018703925061151a565b6001840392505b5061152482611c38565b915082828209979650505050505050565b5f5f805160206122788339815191528282036115ae5760015f5b60078110156115a3578186036115805786816007811061157157611571612211565b6020020151935050505061146d565b828061158e5761158e612244565b6040890151602001518309915060010161154f565b505f9250505061146d565b6115b6611d6e565b6040870151600160c0838101828152920190805b60078110156115f75760208403935085868a85518903088309808552601f199093019291506001016115ca565b505050505f805f90506001838960408c01515f5b600781101561164b578882518a85518c88518a0909098981880896505088898d84518c03088609945060209384019392830192919091019060010161160b565b50505050809250505f61165d83611c38565b905060208a015185818909965050848187099550848287099a9950505050505050505050565b604080518082019091525f80825260208201525f805f805f5f80516020612278833981519152905060808901518160208a015160208c0151099550895194508160a08b015160608c0151099350816101a089015185089250818184089250818584099450817f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a85099250816101c089015184089250818184089250818584099450817f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02585099250816101e089015184089250818184089250818584099450817f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a850992508161020089015184089250818184089250818584099450817f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e881850992508161022089015184089250818184089250508084830993508084860894506117f08760a0015186610eae565b9550885160608a015160808b0151838284099750836102c08b015189099750836102408b015183099550836101a08b015187089550838187089550838689099750836102608b015183099550836101c08b015187089550838187089550838689099750836102808b015183099550836101e08b015187089550838187089550838689099750836102a08b015183099550836102008b0151870895508381870895505050508083860994506118b7866103108c60c0015188856118b29190612225565b610eae565b95506118d0866103108c60e001518a6101a00151610eae565b95506118ea866103108c61010001518a6101c00151610eae565b9550611904866103108c61012001518a6101e00151610eae565b955061191e866103108c61014001518a6102000151610eae565b9550806101c08801516101a0890151099250611943866103108c610160015186610eae565b9550806102008801516101e0890151099250611968866103108c610180015186610eae565b95506101a08701519250808384099150808283099150808284099250611997866103108c6101e0015186610eae565b95506101c087015192508083840991508082830991508082840992506119c6866103108c610200015186610eae565b95506101e087015192508083840991508082830991508082840992506119f5866103108c610220015186610eae565b95506102008701519250808384099150808283099150808284099250611a24866103108c610240015186610eae565b9550611a41866103108c6101a001516118b28b6102200151611cd9565b9550611a52868b6101c00151610f4f565b9550806101c08801516101a0890151099250806101e08801518409925080610200880151840992508061022088015184099250611a98866103108c610260015186610eae565b9550611aa6885f0151611cd9565b9450611aba866103108960c0015188610eae565b955080600189510860a08a0151909350819080099150808284099250808386099450611aee866103108960e0015188610eae565b9550808386099450611b098661031089610100015188610eae565b9550808386099450611b248661031089610120015188610eae565b9550808386099450611b3f8661031089610140015188610eae565b9a9950505050505050505050565b5f805f8051602061227883398151915290505f836020015190505f846040015190505f60019050606088015160808901516101a08901516102408a01518788898387098a868608088609945050506101c08901516102608a01518788898387098a868608088609945050506101e08901516102808a01518788898387098a868608088609945050506102008901516102a08a01518788898387098a8686080886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b5f805f5f80516020612278833981519152905060405160208152602080820152602060408201528460608201526002820360808201528160a082015260205f60c08360055afa9250505f51925081611cd25760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c6564210000006044820152606401610264565b5050919050565b5f611cf15f8051602061227883398151915283612258565b611d08905f80516020612278833981519152612225565b92915050565b60405180606001604052805f81526020015f8152602001611d2d611d6e565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060e001604052806007906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516102e0810167ffffffffffffffff81118282101715611dc457611dc4611d8c565b60405290565b6040516102c0810167ffffffffffffffff81118282101715611dc457611dc4611d8c565b5f60408284031215611dfe575f80fd5b6040516040810181811067ffffffffffffffff82111715611e2157611e21611d8c565b604052823581526020928301359281019290925250919050565b5f82601f830112611e4a575f80fd5b60405160e0810181811067ffffffffffffffff82111715611e6d57611e6d611d8c565b6040528060e0840185811115611e81575f80fd5b845b81811015611e9b578035835260209283019201611e83565b509195945050505050565b5f6104808284031215611eb7575f80fd5b611ebf611da0565b9050611ecb8383611dee565b8152611eda8360408401611dee565b6020820152611eec8360808401611dee565b6040820152611efe8360c08401611dee565b6060820152610100611f1284828501611dee565b6080830152610140611f2685828601611dee565b60a0840152610180611f3a86828701611dee565b60c08501526101c0611f4e87828801611dee565b60e0860152610200611f6288828901611dee565b858701526102409450611f7788868901611dee565b610120870152610280611f8c89828a01611dee565b858801526102c09450611fa189868a01611dee565b610160880152611fb5896103008a01611dee565b848801526103408801356101a0880152610360880135838801526103808801356101e08801526103a0880135828801526103c08801356102208801526103e08801358688015261040088013561026088015261042088013581880152505050506104408401356102a084015261046084013581840152505092915050565b5f805f838503610a60811215612047575f80fd5b61050080821215612056575f80fd5b61205e611dca565b9150853582526020860135602083015261207b8760408801611dee565b604083015261208d8760808801611dee565b606083015261209f8760c08801611dee565b60808301526101006120b388828901611dee565b60a08401526101406120c789828a01611dee565b60c08501526101806120db8a828b01611dee565b60e08601526101c06120ef8b828c01611dee565b8487015261020093506121048b858c01611dee565b6101208701526102406121198c828d01611dee565b84880152610280935061212e8c858d01611dee565b6101608801526121428c6102c08d01611dee565b838801526121548c6103008d01611dee565b6101a08801526121688c6103408d01611dee565b8288015261217a8c6103808d01611dee565b6101e088015261218e8c6103c08d01611dee565b858801526121a08c6104008d01611dee565b6102208801526121b48c6104408d01611dee565b818801525050506121c9896104808a01611dee565b6102608501526104c08801358185015250506104e08601356102a08301528194506121f687828801611e3b565b93505050612208856105e08601611ea6565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b81810381811115611d0857634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261227257634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c6343000817000a", + "nonce": "0x1e", + "chainId": "0x66eee" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x22a7cb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x67b99a3df6529c18cfd17320114dc86e63579c8a6c2717f819de23e4e51a21c5", + "transactionIndex": "0x5", + "blockHash": "0xf37c135d31cb2f4cc34532eb3336967c42fafa564de035ccb86e7841cd7ff92b", + "blockNumber": "0x6cef6a0", + "gasUsed": "0x1f0392", + "effectiveGasPrice": "0xa6bffd0", + "from": "0xb22167f12c232e825d26ffbb3780e024c506664e", + "to": null, + "contractAddress": "0x5f50c15468edad51e987e8e4c814be8453c84de4", + "gasUsedForL1": "0xf348", + "l1BlockNumber": "0x71f552" + } + ], + "libraries": [], + "pending": [], + "returns": { + "contractAddress": { + "internal_type": "address", + "value": "0x5F50C15468eDAD51e987E8E4C814be8453c84de4" + } + }, + "timestamp": 1736601342, + "chain": 421614, + "commit": "9c97b7e0d" +} \ No newline at end of file diff --git a/contracts/script/LightClientArb.s.sol b/contracts/script/LightClientArb.s.sol new file mode 100644 index 000000000..e3c3ea718 --- /dev/null +++ b/contracts/script/LightClientArb.s.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import { Script } from "forge-std/Script.sol"; +import { LightClientArbitrum } from "../src/LightClientArbitrum.sol"; +import { LightClient as LC } from "../src/LightClient.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +contract DeployLightClientArbitrum is Script { + // Deployment Errors + error SetPermissionedProverFailed(); + error OwnerTransferFailed(); + error RetentionPeriodIsNotSetCorrectly(); + error InitialStateIsNotSetCorrectly(); + + function run(uint32 numInitValidators, uint32 stateHistoryRetentionPeriod, address owner) + public + returns ( + address proxyAddress, + address implementationAddress, + LC.LightClientState memory lightClientState + ) + { + address deployer; + + string memory ledgerCommand = vm.envString("USE_HARDWARE_WALLET"); + if (keccak256(bytes(ledgerCommand)) == keccak256(bytes("true"))) { + deployer = vm.envAddress("DEPLOYER_HARDWARE_WALLET_ADDRESS"); + } else { + // get the deployer info from the environment + string memory seedPhrase = vm.envString("DEPLOYER_MNEMONIC"); + uint32 seedPhraseOffset = uint32(vm.envUint("DEPLOYER_MNEMONIC_OFFSET")); + (deployer,) = deriveRememberKey(seedPhrase, seedPhraseOffset); + } + + vm.startBroadcast(deployer); + + string[] memory cmds = new string[](3); + cmds[0] = "diff-test"; + cmds[1] = "mock-genesis"; + cmds[2] = vm.toString(uint256(numInitValidators)); + + bytes memory result = vm.ffi(cmds); + (LC.LightClientState memory state, LC.StakeTableState memory stakeState) = + abi.decode(result, (LC.LightClientState, LC.StakeTableState)); + + proxyAddress = Upgrades.deployUUPSProxy( + "LightClientArbitrum.sol:LightClientArbitrum", + abi.encodeCall( + LC.initialize, (state, stakeState, stateHistoryRetentionPeriod, deployer) + ) + ); + + LightClientArbitrum lightClientArbitrumProxy = LightClientArbitrum(proxyAddress); + + // Currently, the light client is in prover mode so set the permissioned prover + address permissionedProver = vm.envAddress("PERMISSIONED_PROVER_ADDRESS"); + lightClientArbitrumProxy.setPermissionedProver(permissionedProver); + + // transfer ownership to the multisig + lightClientArbitrumProxy.transferOwnership(owner); + + // verify post deployment details + if (lightClientArbitrumProxy.permissionedProver() != permissionedProver) { + revert SetPermissionedProverFailed(); + } + if (lightClientArbitrumProxy.owner() != owner) revert OwnerTransferFailed(); + if (lightClientArbitrumProxy.stateHistoryRetentionPeriod() != stateHistoryRetentionPeriod) { + revert RetentionPeriodIsNotSetCorrectly(); + } + if (lightClientArbitrumProxy.stateHistoryFirstIndex() != 0) { + revert InitialStateIsNotSetCorrectly(); + } + if (lightClientArbitrumProxy.getStateHistoryCount() != 0) { + revert InitialStateIsNotSetCorrectly(); + } + + // Get the implementation address + implementationAddress = Upgrades.getImplementationAddress(proxyAddress); + + vm.stopBroadcast(); + + return (proxyAddress, implementationAddress, state); + } +} diff --git a/contracts/script/PlonkVerifier.s.sol b/contracts/script/PlonkVerifier.s.sol index 23fa0ee7e..08d24b26f 100644 --- a/contracts/script/PlonkVerifier.s.sol +++ b/contracts/script/PlonkVerifier.s.sol @@ -3,9 +3,9 @@ pragma solidity ^0.8.20; import { Script } from "forge-std/Script.sol"; import { Options, Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; - /// @notice Deploys an upgradeable Plonk Verifier Contract using the OpenZeppelin Upgrades plugin. /// @dev The Upgrades library has a deployImplementation function which is used here + contract DeployPlonkVerifierScript is Script { string public contractName = "PlonkVerifier.sol"; diff --git a/contracts/script/README.md b/contracts/script/README.md index 8c508726d..a60c8514a 100644 --- a/contracts/script/README.md +++ b/contracts/script/README.md @@ -368,3 +368,22 @@ This error occurs when build_info is set to true in the foundry.toml configurati foundry profile is set to default when running commands like `just gen-bindings`. Solution: `export FOUNDRY_PROFILE=default` + +## Deploy LightClientArbitrum + +Additional Pre-requisites: + +- an API key from arbiscan to verify the contract. + +```bash + source .env.contracts && \ + forge clean && \ + forge script contracts/script/LightClientArb.s.sol:DeployLightClientArbitrum $NUM_INIT_VALIDATORS $STATE_HISTORY_RETENTION_PERIOD $SAFE_MULTISIG_ADDRESS \ + --sig 'run(uint32, uint32, address)' \ + --ffi \ + --rpc-url $RPC_URL \ + --libraries contracts/src/libraries/PlonkVerifier.sol:PlonkVerifier:$PLONK_VERIFIER_ADDRESS \ + --build-info true \ + --verify --etherscan-api-key $ARBISCAN_API_KEY \ + --broadcast +``` diff --git a/contracts/src/LightClient.sol b/contracts/src/LightClient.sol index 944ed5f9f..6fed84c1b 100644 --- a/contracts/src/LightClient.sol +++ b/contracts/src/LightClient.sol @@ -215,8 +215,6 @@ contract LightClient is Initializable, OwnableUpgradeable, UUPSUpgradeable { finalizedState = _genesis; stateHistoryRetentionPeriod = _stateHistoryRetentionPeriod; - - updateStateHistory(uint64(currentBlockNumber()), uint64(block.timestamp), _genesis); } // === State Modifying APIs === diff --git a/contracts/test/LightClient.t.sol b/contracts/test/LightClient.t.sol index 882fdf792..cf9be666f 100644 --- a/contracts/test/LightClient.t.sol +++ b/contracts/test/LightClient.t.sol @@ -692,6 +692,9 @@ contract LightClient_StateUpdatesTest is LightClientCommonTest { lc.newFinalizedState(states[i], proofs[i]); } + // assert that the size of the state history is equal to the retention period + assertEq(lc.getStateHistoryCount(), numDays); + // the number of elements are equal to the max state history so the first index would // be 0 assertEq(lc.stateHistoryFirstIndex(), 0); @@ -708,7 +711,7 @@ contract LightClient_StateUpdatesTest is LightClientCommonTest { vm.prank(permissionedProver); vm.expectEmit(true, true, true, true); emit LC.NewState(states[i].viewNum, states[i].blockHeight, states[i].blockCommRoot); - vm.warp(initialBlockTimestamp + ((i + 1) * 1 days)); // increase the timestamp for each + vm.warp((numDays + 3) * 1 days); // increase the timestamp lc.newFinalizedState(states[i], proofs[i]); i++; @@ -716,6 +719,10 @@ contract LightClient_StateUpdatesTest is LightClientCommonTest { // index should be one assertEq(lc.stateHistoryFirstIndex(), 1); + // assert that the first state commitment is zero as it would have been deleted + (, uint256 blocktimestamp,,) = lc.stateHistoryCommitments(0); + assertEq(blocktimestamp, 0); + // continue updating the state for (uint256 j = i; j < states.length; j++) { vm.warp(initialBlockTimestamp + ((j + 1) * 1 days)); // increase the timestamp for each @@ -822,8 +829,8 @@ contract LightClient_StateUpdatesTest is LightClientCommonTest { } function test_revertWhenBlockNumberTooHigh() public { - //assert that there is a state history - assertGt(lc.getStateHistoryCount(), 0); + // assert that there isn't a state history when the light client is first initialized + assertEq(lc.getStateHistoryCount(), 0); vm.expectRevert(LC.InsufficientSnapshotHistory.selector); lc.lagOverEscapeHatchThreshold(block.number + 10, 5); // No updates exist in history @@ -1072,14 +1079,4 @@ contract LightClient_HotShotCommUpdatesTest is LightClientCommonTest { assertEqBN254(hotShotBlockComm, blockComm); assertEq(hotShotBlockHeight, blockHeight); } - - function test_revertWhenGetHotShotCommitmentInvalidHeight() public { - // Get the highest HotShot blockheight recorded - uint256 numCommitments = lc.getStateHistoryCount(); - (,, uint64 blockHeight,) = lc.stateHistoryCommitments(numCommitments - 1); - // Expect revert when attempting to retrieve a block height higher than the highest one - // recorded - vm.expectRevert(LC.InvalidHotShotBlockForCommitmentCheck.selector); - lc.getHotShotCommitment(blockHeight + 1); - } } diff --git a/justfile b/justfile index 000051aa1..0424edadd 100644 --- a/justfile +++ b/justfile @@ -101,7 +101,7 @@ build-docker-images: scripts/build-docker-images-native # generate rust bindings for contracts -REGEXP := "^LightClient$|^LightClientStateUpdateVK$|^FeeContract$|PlonkVerifier$|^ERC1967Proxy$|^LightClientMock$|^LightClientStateUpdateVKMock$|^PlonkVerifier2$|^PermissionedStakeTable$" +REGEXP := "^LightClient$|^LightClientArbitrum$|^LightClientStateUpdateVK$|^FeeContract$|PlonkVerifier$|^ERC1967Proxy$|^LightClientMock$|^LightClientStateUpdateVKMock$|^PlonkVerifier2$|^PermissionedStakeTable$" gen-bindings: forge bind --contracts ./contracts/src/ --crate-name contract-bindings --bindings-path contract-bindings --select "{{REGEXP}}" --overwrite --force @@ -111,6 +111,7 @@ gen-bindings: # date, without needed to recompile the contracts. mkdir -p contract-bindings/artifacts jq '.bytecode.object' < contracts/out/LightClient.sol/LightClient.json > contract-bindings/artifacts/LightClient_bytecode.json + jq '.bytecode.object' < contracts/out/LightClientArbitrum.sol/LightClientArbitrum.json > contract-bindings/artifacts/LightClientArbitrum_bytecode.json jq '.bytecode.object' < contracts/out/LightClientMock.sol/LightClientMock.json > contract-bindings/artifacts/LightClientMock_bytecode.json cargo fmt --all