From 17cc3c8a308a7dc75e0680f63a9b0a574809c2c9 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 11:05:05 +0300 Subject: [PATCH 01/31] Make light client contract upgradeable --- .../system_contracts/lib/openzeppelin-contracts-upgradeable | 1 + .../evm/src/evm/system_contracts/src/BitcoinLightClient.sol | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 160000 crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts-upgradeable diff --git a/crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts-upgradeable b/crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts-upgradeable new file mode 160000 index 000000000..723f8cab0 --- /dev/null +++ b/crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts-upgradeable @@ -0,0 +1 @@ +Subproject commit 723f8cab09cdae1aca9ec9cc1cfa040c2d4b06c1 diff --git a/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol b/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol index 367c2bb8a..fb75cbfb4 100644 --- a/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol +++ b/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol @@ -4,6 +4,8 @@ pragma solidity ^0.8.13; import "../lib/Ownable.sol"; import "./interfaces/IBitcoinLightClient.sol"; import "bitcoin-spv/solidity/contracts/ValidateSPV.sol"; +import "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; /// @title A system contract that stores block hashes and witness root hashes of L1 blocks /// @author Citrea @@ -12,7 +14,7 @@ import "bitcoin-spv/solidity/contracts/ValidateSPV.sol"; // - Block hash getters returning 0 value means no such block is recorded // - Witness root getters returning 0 value doesn't necessarily mean no such block is recorded, as 0 is also a valid witness root hash in the case of a 1 transaction block -contract BitcoinLightClient is IBitcoinLightClient { +contract BitcoinLightClient is UUPSUpgradeable, Ownable2StepUpgradeable, IBitcoinLightClient { uint256 public blockNumber; address public constant SYSTEM_CALLER = address(0xdeaDDeADDEaDdeaDdEAddEADDEAdDeadDEADDEaD); mapping(uint256 => bytes32) public blockHashes; @@ -90,4 +92,6 @@ contract BitcoinLightClient is IBitcoinLightClient { bytes32 _witnessRoot = witnessRoots[_blockHash]; return ValidateSPV.prove(_wtxId, _witnessRoot, _proof, _index); } + + function _authorizeUpgrade(address) internal onlyOwner {} } From 840eb81dbd841e2f3d9bac90d488ca8d202c3940 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 12:07:58 +0300 Subject: [PATCH 02/31] Adapt the test suite to make BLC upgradeable --- bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json | 8 +++++++- .../out/BitcoinLightClient.sol/BitcoinLightClient.json | 2 +- .../src/evm/system_contracts/src/BitcoinLightClient.sol | 6 +++--- .../evm/system_contracts/test/BitcoinLightClient.t.sol | 7 +++++-- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json b/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json index 1e026830e..329e89245 100644 --- a/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json +++ b/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json @@ -8,7 +8,13 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json b/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json index 68e5dfbed..2a3a97857 100644 --- a/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json +++ b/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"blockHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByHash","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeBlockNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockInfo","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_witnessRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"witnessRoots","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"BlockInfoAdded","inputs":[{"name":"blockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"merkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506106f18061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033","sourceMap":"614:4087:29:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033","sourceMap":"614:4087:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:130;;;;;;:::i;:::-;2730:7;2756:24;;;:12;:24;;;;;;;2657:130;;;;345:25:35;;;333:2;318:18;2657:130:29;;;;;;;;1883:395;;;;;;:::i;:::-;;:::i;:::-;;1305:174;;;;;;:::i;:::-;;:::i;800:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;4205:222;;;;;;:::i;:::-;;:::i;:::-;;;1955:14:35;;1948:22;1930:41;;1918:2;1903:18;4205:222:29;1790:187:35;671:26:29;;;;;;2923:149;;;;;;:::i;:::-;3000:7;3039:25;;;:11;:25;;;;;;;;;3026:39;;:12;:39;;;;;;;2923:149;852:47;;;;;;:::i;:::-;;;;;;;;;;;;;;3534:205;;;;;;:::i;:::-;;:::i;703:91::-;;751:42;703:91;;;;;-1:-1:-1;;;;;2947:32:35;;;2929:51;;2917:2;2902:18;703:91:29;2783:203:35;2399:125:29;;;;;;:::i;:::-;2466:7;2492:25;;;:11;:25;;;;;;;2399:125;1883:395;1037:10;751:42;1037:27;1029:71;;;;-1:-1:-1;;;1029:71:29;;3193:2:35;1029:71:29;;;3175:21:35;3232:2;3212:18;;;3205:30;3271:33;3251:18;;;3244:61;3322:18;;1029:71:29;;;;;;;;;1977:20:::1;2000:11:::0;;;2029:17;;;2021:45:::1;;;::::0;-1:-1:-1;;;2021:45:29;;3553:2:35;2021:45:29::1;::::0;::::1;3535:21:35::0;3592:2;3572:18;;;3565:30;-1:-1:-1;;;3611:18:35;;;3604:45;3666:18;;2021:45:29::1;3351:339:35::0;2021:45:29::1;2076:25;::::0;;;:11:::1;:25;::::0;;;;;;;:38;;;2138:16:::1;::::0;2088:12;;2138:16:::1;:::i;:::-;2124:11;:30:::0;;;2164:24;;;:12:::1;:24;::::0;;;;;;;:39;;;2233:11;;2218:53;;4124:25:35;;;4165:18;;;4158:34;;;4208:18;;;4201:34;;;2218:53:29::1;::::0;4112:2:35;4097:18;2218:53:29::1;;;;;;;1967:311;1883:395:::0;;:::o;1305:174::-;1037:10;751:42;1037:27;1029:71;;;;-1:-1:-1;;;1029:71:29;;3193:2:35;1029:71:29;;;3175:21:35;3232:2;3212:18;;;3205:30;3271:33;3251:18;;;3244:61;3322:18;;1029:71:29;2991:355:35;1029:71:29;1396:11:::1;::::0;:16;1388:48:::1;;;::::0;-1:-1:-1;;;1388:48:29;;4448:2:35;1388:48:29::1;::::0;::::1;4430:21:35::0;4487:2;4467:18;;;4460:30;-1:-1:-1;;;4506:18:35;;;4499:49;4565:18;;1388:48:29::1;4246:343:35::0;1388:48:29::1;1446:11;:26:::0;1305:174::o;4205:222::-;4330:4;4370:25;;;:11;:25;;;;;;4353:67;;4397:6;4405;;4413;4353:16;:67::i;:::-;4346:74;4205:222;-1:-1:-1;;;;;;4205:222:29:o;3534:205::-;3657:4;3680:52;3697:10;3709:6;3717;;3725;4433:266;4557:4;4596:24;;;:12;:24;;;;;;;;;4637:55;;;;;;;;;;;;;;;;;;;;4596:24;4637:55;;4655:6;;4596:24;;4637:55;4677:6;;;;;;4637:55;;4677:6;;;;4637:55;;;;;;;;;-1:-1:-1;4685:6:29;;-1:-1:-1;4637:17:29;;-1:-1:-1;;4637:55:29:i;:::-;4630:62;4433:266;-1:-1:-1;;;;;;;4433:266:29:o;1685:539:5:-;1843:4;1913:11;1904:5;:20;:35;;;;-1:-1:-1;1928:11:5;;1904:35;:69;;;;-1:-1:-1;1943:25:5;;:30;1904:69;1900:111;;;-1:-1:-1;1996:4:5;1989:11;;1900:111;2083:134;2125:5;2144:18;2176:11;2201:6;2083:28;:134::i;:::-;2076:141;;1685:539;;;;;;;:::o;36339:829:2:-;36492:4;36567:2;36552:5;:12;:17;;;;:::i;:::-;:22;36548:65;;-1:-1:-1;36597:5:2;36590:12;;36548:65;36657:5;:12;36673:1;36657:17;36653:60;;-1:-1:-1;36697:5:2;36690:12;;36653:60;36735:6;36770:5;36723:9;36825:303;36846:5;:12;36842:1;:16;36825:303;;;36887:8;36894:1;36887:4;:8;:::i;:::-;36899:1;36887:13;36883:205;;36931:46;36950:16;:5;36964:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;36950:16:2;36968:8;36931:18;:46::i;:::-;36920:57;;36883:205;;;37027:46;37046:8;37056:16;:5;37070:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;37056:16:2;37027:18;:46::i;:::-;37016:57;;36883:205;37116:1;37108:9;;;;;36860:7;36865:2;36860:7;;:::i;:::-;;;36825:303;;;-1:-1:-1;37144:17:2;;;;36339:829;-1:-1:-1;;;;;36339:829:2:o;34697:127::-;34772:7;34798:19;34810:2;34814;34798:11;:19::i;:::-;34791:26;;34697:127;;;;;:::o;10264:386::-;10332:11;10455:2;10449:4;10442:16;10484:2;10478:4;10471:16;10541:2;10535:4;10531:2;10525:4;10522:1;10515:5;10504:40;10500:45;10599:2;10593:4;10589:2;10583:4;10580:1;10573:5;10562:40;-1:-1:-1;;10629:4:2;10623:11;;10264:386;-1:-1:-1;;10264:386:2:o;14:180:35:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:35;;14:180;-1:-1:-1;14:180:35:o;381:248::-;449:6;457;510:2;498:9;489:7;485:23;481:32;478:52;;;526:1;523;516:12;478:52;-1:-1:-1;;549:23:35;;;619:2;604:18;;;591:32;;-1:-1:-1;381:248:35:o;819:347::-;870:8;880:6;934:3;927:4;919:6;915:17;911:27;901:55;;952:1;949;942:12;901:55;-1:-1:-1;975:20:35;;1018:18;1007:30;;1004:50;;;1050:1;1047;1040:12;1004:50;1087:4;1079:6;1075:17;1063:29;;1139:3;1132:4;1123:6;1115;1111:19;1107:30;1104:39;1101:59;;;1156:1;1153;1146:12;1101:59;819:347;;;;;:::o;1171:614::-;1268:6;1276;1284;1292;1300;1353:3;1341:9;1332:7;1328:23;1324:33;1321:53;;;1370:1;1367;1360:12;1321:53;1406:9;1393:23;1383:33;;1463:2;1452:9;1448:18;1435:32;1425:42;;1518:2;1507:9;1503:18;1490:32;1545:18;1537:6;1534:30;1531:50;;;1577:1;1574;1567:12;1531:50;1616:58;1666:7;1657:6;1646:9;1642:22;1616:58;:::i;:::-;1171:614;;;;-1:-1:-1;1693:8:35;1775:2;1760:18;1747:32;;1171:614;-1:-1:-1;;;;1171:614:35:o;3695:222::-;3760:9;;;3781:10;;;3778:133;;;3833:10;3828:3;3824:20;3821:1;3814:31;3868:4;3865:1;3858:15;3896:4;3893:1;3886:15;4594:209;4626:1;4652;4642:132;;4696:10;4691:3;4687:20;4684:1;4677:31;4731:4;4728:1;4721:15;4759:4;4756:1;4749:15;4642:132;-1:-1:-1;4788:9:35;;4594:209::o","linkReferences":{}},"methodIdentifiers":{"SYSTEM_CALLER()":"d761753e","blockHashes(uint256)":"34cdf78d","blockNumber()":"57e871e7","getBlockHash(uint256)":"ee82ac5e","getWitnessRootByHash(bytes32)":"0466efc4","getWitnessRootByNumber(uint256)":"61b207e2","initializeBlockNumber(uint256)":"1f578333","setBlockInfo(bytes32,bytes32)":"0e27bc11","verifyInclusion(bytes32,bytes32,bytes,uint256)":"d269a03e","verifyInclusion(uint256,bytes32,bytes,uint256)":"4ffd344a","witnessRoots(bytes32)":"a91d8b3d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockInfoAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"}],\"name\":\"getWitnessRootByHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getWitnessRootByNumber\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"initializeBlockNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_witnessRoot\",\"type\":\"bytes32\"}],\"name\":\"setBlockInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"witnessRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"kind\":\"dev\",\"methods\":{\"getBlockHash(uint256)\":{\"params\":{\"_blockNumber\":\"Number of the block to get the hash for\"},\"returns\":{\"_0\":\"Block hash for the given block\"}},\"getWitnessRootByHash(bytes32)\":{\"params\":{\"_blockHash\":\"Block hash of the block to get the witness root for\"},\"returns\":{\"_0\":\"Witness root for the given block\"}},\"getWitnessRootByNumber(uint256)\":{\"params\":{\"_blockNumber\":\"Block number of the block to get the witness root for\"},\"returns\":{\"_0\":\"Merkle root for the given block\"}},\"initializeBlockNumber(uint256)\":{\"params\":{\"_blockNumber\":\"L1 block number that is associated with the genesis block of Citrea\"}},\"setBlockInfo(bytes32,bytes32)\":{\"details\":\"Block number is incremented by the contract as no block info should be overwritten or skipped\",\"params\":{\"_blockHash\":\"Hash of the current L1 block\",\"_witnessRoot\":\"Witness root of the current L1 block, must be in little endian \"}},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockHash\":\"Block hash of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockNumber\":\"Block number of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}}},\"title\":\"A system contract that stores block hashes and witness root hashes of L1 blocks\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initializeBlockNumber(uint256)\":{\"notice\":\"Sets the initial value for the block number, can only be called once\"},\"setBlockInfo(bytes32,bytes32)\":{\"notice\":\"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BitcoinLightClient.sol\":\"BitcoinLightClient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":bitcoin-spv/=lib/bitcoin-spv/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/Ownable.sol\":{\"keccak256\":\"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee\",\"dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x9da3ff5d2dfd6debcef91c7c53974c6f5a3c00115db7a02b3af327e1a1803bbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa807df3f7cb25c0af7256fedeb5b5559d462efe8b182e8ed7371ecee2e64fd0\",\"dweb:/ipfs/QmUP9rmmEvT2wrcfp1qj7L6kHWTu8uWTysQiSyjyAsaj72\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"BlockInfoAdded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getWitnessRootByHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWitnessRootByNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initializeBlockNumber"},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_witnessRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockInfo"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"witnessRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getBlockHash(uint256)":{"params":{"_blockNumber":"Number of the block to get the hash for"},"returns":{"_0":"Block hash for the given block"}},"getWitnessRootByHash(bytes32)":{"params":{"_blockHash":"Block hash of the block to get the witness root for"},"returns":{"_0":"Witness root for the given block"}},"getWitnessRootByNumber(uint256)":{"params":{"_blockNumber":"Block number of the block to get the witness root for"},"returns":{"_0":"Merkle root for the given block"}},"initializeBlockNumber(uint256)":{"params":{"_blockNumber":"L1 block number that is associated with the genesis block of Citrea"}},"setBlockInfo(bytes32,bytes32)":{"details":"Block number is incremented by the contract as no block info should be overwritten or skipped","params":{"_blockHash":"Hash of the current L1 block","_witnessRoot":"Witness root of the current L1 block, must be in little endian "}},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockHash":"Block hash of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockNumber":"Block number of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}}},"version":1},"userdoc":{"kind":"user","methods":{"initializeBlockNumber(uint256)":{"notice":"Sets the initial value for the block number, can only be called once"},"setBlockInfo(bytes32,bytes32)":{"notice":"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set"},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"}},"version":1}},"settings":{"remappings":["bitcoin-spv/=lib/bitcoin-spv/","forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/BitcoinLightClient.sol":"BitcoinLightClient"},"evmVersion":"paris","libraries":{}},"sources":{"lib/Ownable.sol":{"keccak256":"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07","urls":["bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee","dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94"],"license":"MIT"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"src/BitcoinLightClient.sol":{"keccak256":"0x9da3ff5d2dfd6debcef91c7c53974c6f5a3c00115db7a02b3af327e1a1803bbd","urls":["bzz-raw://fa807df3f7cb25c0af7256fedeb5b5559d462efe8b182e8ed7371ecee2e64fd0","dweb:/ipfs/QmUP9rmmEvT2wrcfp1qj7L6kHWTu8uWTysQiSyjyAsaj72"],"license":"MIT"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file +{"abi":[{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blockHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByHash","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeBlockNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockInfo","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_witnessRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"witnessRoots","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"BlockInfoAdded","inputs":[{"name":"blockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"merkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b5060805161106361003d6000396000818161076e01528181610797015261093b01526110636000f3fe6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033","sourceMap":"791:4201:39:-:0;;;1171:4:32;1128:48;;791:4201:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033","sourceMap":"791:4201:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:130;;;;;;;;;;-1:-1:-1;2876:130:39;;;;;:::i;:::-;2949:7;2975:24;;;:12;:24;;;;;;;2876:130;;;;345:25:44;;;333:2;318:18;2876:130:39;;;;;;;;2102:395;;;;;;;;;;-1:-1:-1;2102:395:39;;;;;:::i;:::-;;:::i;:::-;;1524:174;;;;;;;;;;-1:-1:-1;1524:174:39;;;;;:::i;:::-;;:::i;1019:46::-;;;;;;;;;;-1:-1:-1;1019:46:39;;;;;:::i;:::-;;;;;;;;;;;;;;4158:214:32;;;;;;:::i;:::-;;:::i;4424:222:39:-;;;;;;;;;;-1:-1:-1;4424:222:39;;;;;:::i;:::-;;:::i;:::-;;;3265:14:44;;3258:22;3240:41;;3228:2;3213:18;4424:222:39;3100:187:44;3705:134:32;;;;;;;;;;;;;:::i;890:26:39:-;;;;;;;;;;;;;;;;3142:149;;;;;;;;;;-1:-1:-1;3142:149:39;;;;;:::i;:::-;3219:7;3258:25;;;:11;:25;;;;;;;;;3245:39;;:12;:39;;;;;;;3142:149;3155:101:30;;;;;;;;;;;;;:::i;2774:229:29:-;;;;;;;;;;;;;:::i;2441:144:30:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3638:32:44;;;3620:51;;3608:2;3593:18;2441:144:30;3474:203:44;1071:47:39;;;;;;;;;;-1:-1:-1;1071:47:39;;;;;:::i;:::-;;;;;;;;;;;;;;1819:58:32;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:32;;;;;;;;;;;;:::i;3753:205:39:-;;;;;;;;;;-1:-1:-1;3753:205:39;;;;;:::i;:::-;;:::i;922:91::-;;;;;;;;;;;;970:42;922:91;;1680:168:29;;;;;;;;;;;;;:::i;2618:125:39:-;;;;;;;;;;-1:-1:-1;2618:125:39;;;;;:::i;:::-;2685:7;2711:25;;;:11;:25;;;;;;;2618:125;2041:247:29;;;;;;;;;;-1:-1:-1;2041:247:29;;;;;:::i;:::-;;:::i;2102:395:39:-;1256:10;970:42;1256:27;1248:71;;;;-1:-1:-1;;;1248:71:39;;5350:2:44;1248:71:39;;;5332:21:44;5389:2;5369:18;;;5362:30;5428:33;5408:18;;;5401:61;5479:18;;1248:71:39;;;;;;;;;2196:20:::1;2219:11:::0;;;2248:17;;;2240:45:::1;;;::::0;-1:-1:-1;;;2240:45:39;;5710:2:44;2240:45:39::1;::::0;::::1;5692:21:44::0;5749:2;5729:18;;;5722:30;-1:-1:-1;;;5768:18:44;;;5761:45;5823:18;;2240:45:39::1;5508:339:44::0;2240:45:39::1;2295:25;::::0;;;:11:::1;:25;::::0;;;;;;;:38;;;2357:16:::1;::::0;2307:12;;2357:16:::1;:::i;:::-;2343:11;:30:::0;;;2383:24;;;:12:::1;:24;::::0;;;;;;;:39;;;2452:11;;2437:53;;6281:25:44;;;6322:18;;;6315:34;;;6365:18;;;6358:34;;;2437:53:39::1;::::0;6269:2:44;6254:18;2437:53:39::1;;;;;;;2186:311;2102:395:::0;;:::o;1524:174::-;1256:10;970:42;1256:27;1248:71;;;;-1:-1:-1;;;1248:71:39;;5350:2:44;1248:71:39;;;5332:21:44;5389:2;5369:18;;;5362:30;5428:33;5408:18;;;5401:61;5479:18;;1248:71:39;5148:355:44;1248:71:39;1615:11:::1;::::0;:16;1607:48:::1;;;::::0;-1:-1:-1;;;1607:48:39;;6605:2:44;1607:48:39::1;::::0;::::1;6587:21:44::0;6644:2;6624:18;;;6617:30;-1:-1:-1;;;6663:18:44;;;6656:49;6722:18;;1607:48:39::1;6403:343:44::0;1607:48:39::1;1665:11;:26:::0;1524:174::o;4158:214:32:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;4424:222:39:-;4549:4;4589:25;;;:11;:25;;;;;;4572:67;;4616:6;4624;;4632;4572:16;:67::i;:::-;4565:74;4424:222;-1:-1:-1;;;;;;4424:222:39:o;3705:134:32:-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:32;:::o;3155:101:30:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;2774:229:29:-;966:10:33;;2869:14:29;:12;:14::i;:::-;-1:-1:-1;;;;;2869:24:29;;2865:96;;2916:34;;-1:-1:-1;;;2916:34:29;;-1:-1:-1;;;;;3638:32:44;;2916:34:29;;;3620:51:44;3593:18;;2916:34:29;3474:203:44;2865:96:29;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;2441:144:30:-;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:30;;2441:144;-1:-1:-1;;2441:144:30:o;3753:205:39:-;3876:4;3899:52;3916:10;3928:6;3936;;3944;3899:16;:52::i;1680:168:29:-;1733:7;;1318:27;1784:25;1187:174;2041:247;2334:13:30;:11;:13::i;:::-;1318:27:29;2197:26;;-1:-1:-1;;;;;;2197:26:29::1;-1:-1:-1::0;;;;;2197:26:29;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;2238:43:29::1;;;;;;;;;;;2120:168;2041:247:::0;:::o;4599:312:32:-;4679:4;-1:-1:-1;;;;;4688:6:32;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:32;:32;-1:-1:-1;;;;;;;;;;;2035:53:35;-1:-1:-1;;;;;2035:53:35;;1957:138;4749:32:32;-1:-1:-1;;;;;4749:42:32;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:32;;;;;;;;;;;4924:66:39;2334:13:30;:11;:13::i;6052:538:32:-;6169:17;-1:-1:-1;;;;;6151:50:32;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:32;;;;;;;;-1:-1:-1;;6151:52:32;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:32;;-1:-1:-1;;;;;3638:32:44;;6513:60:32;;;3620:51:44;3593:18;;6513:60:32;3474:203:44;6147:437:32;-1:-1:-1;;;;;;;;;;;6245:40:32;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:32;;;;;345:25:44;;;318:18;;6312:34:32;199:177:44;6241:120:32;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;4652:266:39:-;4776:4;4815:24;;;:12;:24;;;;;;;;;4856:55;;;;;;;;;;;;;;;;;;;;4815:24;4856:55;;4874:6;;4815:24;;4856:55;4896:6;;;;;;4856:55;;4896:6;;;;4856:55;;;;;;;;;-1:-1:-1;4904:6:39;;-1:-1:-1;4856:17:39;;-1:-1:-1;;4856:55:39:i;:::-;4849:62;4652:266;-1:-1:-1;;;;;;;4652:266:39:o;5028:213:32:-;5102:4;-1:-1:-1;;;;;5111:6:32;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:32;;;;;;;;;;;2658:162:30;966:10:33;2717:7:30;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:30;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:30;;966:10:33;2763:40:30;;;3620:51:44;3593:18;;2763:40:30;3474:203:44;2472:222:29;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:29;;;2653:34;2678:8;2653:24;:34::i;2779:335:35:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:35;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;1685:539:5:-;1843:4;1913:11;1904:5;:20;:35;;;;-1:-1:-1;1928:11:5;;1904:35;:69;;;;-1:-1:-1;1943:25:5;;:30;1904:69;1900:111;;;-1:-1:-1;1996:4:5;1989:11;;1900:111;2083:134;2125:5;2144:18;2176:11;2201:6;2083:28;:134::i;:::-;2076:141;;1685:539;;;;;;;:::o;3774:248:30:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:30;;-1:-1:-1;;;;;3941:19:30;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;2186:281:35:-;2263:17;-1:-1:-1;;;;;2263:29:35;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:35;;-1:-1:-1;;;;;3638:32:44;;2320:47:35;;;3620:51:44;3593:18;;2320:47:35;3474:203:44;2259:119:35;-1:-1:-1;;;;;;;;;;;2387:73:35;;-1:-1:-1;;;;;;2387:73:35;-1:-1:-1;;;;;2387:73:35;;;;;;;;;;2186:281::o;4106:253:37:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:37;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;;;;4106:253;;;;;:::o;6598:122:35:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:35;;;;;;;;;;;36339:829:2;36492:4;36567:2;36552:5;:12;:17;;;;:::i;:::-;:22;36548:65;;-1:-1:-1;36597:5:2;36590:12;;36548:65;36657:5;:12;36673:1;36657:17;36653:60;;-1:-1:-1;36697:5:2;36690:12;;36653:60;36735:6;36770:5;36723:9;36825:303;36846:5;:12;36842:1;:16;36825:303;;;36887:8;36894:1;36887:4;:8;:::i;:::-;36899:1;36887:13;36883:205;;36931:46;36950:16;:5;36964:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;36950:16:2;36968:8;36931:18;:46::i;:::-;36920:57;;36883:205;;;37027:46;37046:8;37056:16;:5;37070:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;37056:16:2;37027:18;:46::i;:::-;37016:57;;36883:205;37116:1;37108:9;;;;;36860:7;36865:2;36860:7;;:::i;:::-;;;36825:303;;;-1:-1:-1;37144:17:2;;;;36339:829;-1:-1:-1;;;;;36339:829:2:o;4625:582:37:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:37;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:37;;-1:-1:-1;;;;;3638:32:44;;5121:24:37;;;3620:51:44;3593:18;;5121:24:37;3474:203:44;5041:119:37;-1:-1:-1;5180:10:37;4793:408;4625:582;;;;;:::o;34697:127:2:-;34772:7;34798:19;34810:2;34814;34798:11;:19::i;5743:516:37:-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:37;;;;;;;;;;;10264:386:2;10332:11;10455:2;10449:4;10442:16;10484:2;10478:4;10471:16;10541:2;10535:4;10531:2;10525:4;10522:1;10515:5;10504:40;10500:45;10599:2;10593:4;10589:2;10583:4;10580:1;10573:5;10562:40;-1:-1:-1;;10629:4:2;10623:11;;10264:386;-1:-1:-1;;10264:386:2:o;14:180:44:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:44;;14:180;-1:-1:-1;14:180:44:o;381:248::-;449:6;457;510:2;498:9;489:7;485:23;481:32;478:52;;;526:1;523;516:12;478:52;-1:-1:-1;;549:23:44;;;619:2;604:18;;;591:32;;-1:-1:-1;381:248:44:o;819:173::-;887:20;;-1:-1:-1;;;;;936:31:44;;926:42;;916:70;;982:1;979;972:12;916:70;819:173;;;:::o;997:127::-;1058:10;1053:3;1049:20;1046:1;1039:31;1089:4;1086:1;1079:15;1113:4;1110:1;1103:15;1129:995;1206:6;1214;1267:2;1255:9;1246:7;1242:23;1238:32;1235:52;;;1283:1;1280;1273:12;1235:52;1306:29;1325:9;1306:29;:::i;:::-;1296:39;;1386:2;1375:9;1371:18;1358:32;1409:18;1450:2;1442:6;1439:14;1436:34;;;1466:1;1463;1456:12;1436:34;1504:6;1493:9;1489:22;1479:32;;1549:7;1542:4;1538:2;1534:13;1530:27;1520:55;;1571:1;1568;1561:12;1520:55;1607:2;1594:16;1629:2;1625;1622:10;1619:36;;;1635:18;;:::i;:::-;1710:2;1704:9;1678:2;1764:13;;-1:-1:-1;;1760:22:44;;;1784:2;1756:31;1752:40;1740:53;;;1808:18;;;1828:22;;;1805:46;1802:72;;;1854:18;;:::i;:::-;1894:10;1890:2;1883:22;1929:2;1921:6;1914:18;1969:7;1964:2;1959;1955;1951:11;1947:20;1944:33;1941:53;;;1990:1;1987;1980:12;1941:53;2046:2;2041;2037;2033:11;2028:2;2020:6;2016:15;2003:46;2091:1;2086:2;2081;2073:6;2069:15;2065:24;2058:35;2112:6;2102:16;;;;;;;1129:995;;;;;:::o;2129:347::-;2180:8;2190:6;2244:3;2237:4;2229:6;2225:17;2221:27;2211:55;;2262:1;2259;2252:12;2211:55;-1:-1:-1;2285:20:44;;2328:18;2317:30;;2314:50;;;2360:1;2357;2350:12;2314:50;2397:4;2389:6;2385:17;2373:29;;2449:3;2442:4;2433:6;2425;2421:19;2417:30;2414:39;2411:59;;;2466:1;2463;2456:12;2411:59;2129:347;;;;;:::o;2481:614::-;2578:6;2586;2594;2602;2610;2663:3;2651:9;2642:7;2638:23;2634:33;2631:53;;;2680:1;2677;2670:12;2631:53;2716:9;2703:23;2693:33;;2773:2;2762:9;2758:18;2745:32;2735:42;;2828:2;2817:9;2813:18;2800:32;2855:18;2847:6;2844:30;2841:50;;;2887:1;2884;2877:12;2841:50;2926:58;2976:7;2967:6;2956:9;2952:22;2926:58;:::i;:::-;2481:614;;;;-1:-1:-1;3003:8:44;3085:2;3070:18;3057:32;;2481:614;-1:-1:-1;;;;2481:614:44:o;3682:250::-;3767:1;3777:113;3791:6;3788:1;3785:13;3777:113;;;3867:11;;;3861:18;3848:11;;;3841:39;3813:2;3806:10;3777:113;;;-1:-1:-1;;3924:1:44;3906:16;;3899:27;3682:250::o;3937:396::-;4086:2;4075:9;4068:21;4049:4;4118:6;4112:13;4161:6;4156:2;4145:9;4141:18;4134:34;4177:79;4249:6;4244:2;4233:9;4229:18;4224:2;4216:6;4212:15;4177:79;:::i;:::-;4317:2;4296:15;-1:-1:-1;;4292:29:44;4277:45;;;;4324:2;4273:54;;3937:396;-1:-1:-1;;3937:396:44:o;4957:186::-;5016:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:52;;;5085:1;5082;5075:12;5037:52;5108:29;5127:9;5108:29;:::i;5852:222::-;5917:9;;;5938:10;;;5935:133;;;5990:10;5985:3;5981:20;5978:1;5971:31;6025:4;6022:1;6015:15;6053:4;6050:1;6043:15;6751:184;6821:6;6874:2;6862:9;6853:7;6849:23;6845:32;6842:52;;;6890:1;6887;6880:12;6842:52;-1:-1:-1;6913:16:44;;6751:184;-1:-1:-1;6751:184:44:o;6940:287::-;7069:3;7107:6;7101:13;7123:66;7182:6;7177:3;7170:4;7162:6;7158:17;7123:66;:::i;:::-;7205:16;;;;;6940:287;-1:-1:-1;;6940:287:44:o;7232:209::-;7264:1;7290;7280:132;;7334:10;7329:3;7325:20;7322:1;7315:31;7369:4;7366:1;7359:15;7397:4;7394:1;7387:15;7280:132;-1:-1:-1;7426:9:44;;7232:209::o","linkReferences":{},"immutableReferences":{"50641":[{"start":1902,"length":32},{"start":1943,"length":32},{"start":2363,"length":32}]}},"methodIdentifiers":{"SYSTEM_CALLER()":"d761753e","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptOwnership()":"79ba5097","blockHashes(uint256)":"34cdf78d","blockNumber()":"57e871e7","getBlockHash(uint256)":"ee82ac5e","getWitnessRootByHash(bytes32)":"0466efc4","getWitnessRootByNumber(uint256)":"61b207e2","initializeBlockNumber(uint256)":"1f578333","owner()":"8da5cb5b","pendingOwner()":"e30c3978","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setBlockInfo(bytes32,bytes32)":"0e27bc11","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","verifyInclusion(bytes32,bytes32,bytes,uint256)":"d269a03e","verifyInclusion(uint256,bytes32,bytes,uint256)":"4ffd344a","witnessRoots(bytes32)":"a91d8b3d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockInfoAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"}],\"name\":\"getWitnessRootByHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getWitnessRootByNumber\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"initializeBlockNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_witnessRoot\",\"type\":\"bytes32\"}],\"name\":\"setBlockInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"witnessRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"getBlockHash(uint256)\":{\"params\":{\"_blockNumber\":\"Number of the block to get the hash for\"},\"returns\":{\"_0\":\"Block hash for the given block\"}},\"getWitnessRootByHash(bytes32)\":{\"params\":{\"_blockHash\":\"Block hash of the block to get the witness root for\"},\"returns\":{\"_0\":\"Witness root for the given block\"}},\"getWitnessRootByNumber(uint256)\":{\"params\":{\"_blockNumber\":\"Block number of the block to get the witness root for\"},\"returns\":{\"_0\":\"Merkle root for the given block\"}},\"initializeBlockNumber(uint256)\":{\"params\":{\"_blockNumber\":\"L1 block number that is associated with the genesis block of Citrea\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setBlockInfo(bytes32,bytes32)\":{\"details\":\"Block number is incremented by the contract as no block info should be overwritten or skipped\",\"params\":{\"_blockHash\":\"Hash of the current L1 block\",\"_witnessRoot\":\"Witness root of the current L1 block, must be in little endian \"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockHash\":\"Block hash of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockNumber\":\"Block number of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}}},\"title\":\"A system contract that stores block hashes and witness root hashes of L1 blocks\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initializeBlockNumber(uint256)\":{\"notice\":\"Sets the initial value for the block number, can only be called once\"},\"setBlockInfo(bytes32,bytes32)\":{\"notice\":\"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BitcoinLightClient.sol\":\"BitcoinLightClient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/Ownable.sol\":{\"keccak256\":\"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee\",\"dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e\",\"dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"BlockInfoAdded","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getWitnessRootByHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWitnessRootByNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initializeBlockNumber"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_witnessRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockInfo"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"witnessRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"getBlockHash(uint256)":{"params":{"_blockNumber":"Number of the block to get the hash for"},"returns":{"_0":"Block hash for the given block"}},"getWitnessRootByHash(bytes32)":{"params":{"_blockHash":"Block hash of the block to get the witness root for"},"returns":{"_0":"Witness root for the given block"}},"getWitnessRootByNumber(uint256)":{"params":{"_blockNumber":"Block number of the block to get the witness root for"},"returns":{"_0":"Merkle root for the given block"}},"initializeBlockNumber(uint256)":{"params":{"_blockNumber":"L1 block number that is associated with the genesis block of Citrea"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setBlockInfo(bytes32,bytes32)":{"details":"Block number is incremented by the contract as no block info should be overwritten or skipped","params":{"_blockHash":"Hash of the current L1 block","_witnessRoot":"Witness root of the current L1 block, must be in little endian "}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockHash":"Block hash of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockNumber":"Block number of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}}},"version":1},"userdoc":{"kind":"user","methods":{"initializeBlockNumber(uint256)":{"notice":"Sets the initial value for the block number, can only be called once"},"setBlockInfo(bytes32,bytes32)":{"notice":"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set"},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/BitcoinLightClient.sol":"BitcoinLightClient"},"evmVersion":"paris","libraries":{}},"sources":{"lib/Ownable.sol":{"keccak256":"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07","urls":["bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee","dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94"],"license":"MIT"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f","urls":["bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e","dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV"],"license":"MIT"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":39} \ No newline at end of file diff --git a/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol b/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol index fb75cbfb4..dd28b56ff 100644 --- a/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol +++ b/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol @@ -4,8 +4,8 @@ pragma solidity ^0.8.13; import "../lib/Ownable.sol"; import "./interfaces/IBitcoinLightClient.sol"; import "bitcoin-spv/solidity/contracts/ValidateSPV.sol"; -import "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "openzeppelin-contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; /// @title A system contract that stores block hashes and witness root hashes of L1 blocks /// @author Citrea @@ -93,5 +93,5 @@ contract BitcoinLightClient is UUPSUpgradeable, Ownable2StepUpgradeable, IBitcoi return ValidateSPV.prove(_wtxId, _witnessRoot, _proof, _index); } - function _authorizeUpgrade(address) internal onlyOwner {} + function _authorizeUpgrade(address) internal override onlyOwner {} } diff --git a/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol b/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol index f4d5f50ff..e822ed609 100644 --- a/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol +++ b/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol @@ -3,16 +3,19 @@ pragma solidity ^0.8.13; import "forge-std/Test.sol"; import "../src/BitcoinLightClient.sol"; +import "openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol"; + contract BitcoinLightClientTest is Test { - BitcoinLightClient bitcoinLightClient; + BitcoinLightClient bitcoinLightClient = BitcoinLightClient(address(0x3100000000000000000000000000000000000001)); bytes32 mockBlockHash = bytes32(keccak256("CITREA_TEST")); bytes32 mockWitnessRoot = bytes32(keccak256("CITREA")); uint256 constant INITIAL_BLOCK_NUMBER = 505050; address constant SYSTEM_CALLER = address(0xdeaDDeADDEaDdeaDdEAddEADDEAdDeadDEADDEaD); function setUp() public { - bitcoinLightClient = new BitcoinLightClient(); + address lightClient_impl = address(new BitcoinLightClient()); + vm.etch(address(bitcoinLightClient), lightClient_impl.code); vm.startPrank(SYSTEM_CALLER); } From 205b8acb9bcc578b05d6783fc778ccd5dcc67383 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 12:08:26 +0300 Subject: [PATCH 03/31] forge install: openzeppelin-contracts v5.0.2 --- .gitmodules | 3 +++ crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts | 1 + 2 files changed, 4 insertions(+) create mode 160000 crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts diff --git a/.gitmodules b/.gitmodules index 9de02c1ed..162f4d0d2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "crates/evm/src/evm/system_contracts/lib/bitcoin-spv"] path = crates/evm/src/evm/system_contracts/lib/bitcoin-spv url = https://github.com/keep-network/bitcoin-spv +[submodule "crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts"] + path = crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts + url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts b/crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts new file mode 160000 index 000000000..dbb6104ce --- /dev/null +++ b/crates/evm/src/evm/system_contracts/lib/openzeppelin-contracts @@ -0,0 +1 @@ +Subproject commit dbb6104ce834628e473d2173bbc9d47f81a9eec3 From d32ec04c2a98d1a08e8cc437397b3467e128a064 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 14:35:23 +0300 Subject: [PATCH 04/31] Fix genesis --- .../demo-tests/bitcoin-regtest/evm.json | 6 ++- .../genesis/demo-tests/mock/evm.json | 12 ++++- .../evm.json | 12 ++++- .../genesis/integration-tests/evm.json | 12 ++++- .../BitcoinLightClient.json | 2 +- .../out/Bridge.sol/Bridge.json | 2 +- .../test/BitcoinLightClient.t.sol | 51 ++++++++++++++++++- 7 files changed, 89 insertions(+), 8 deletions(-) diff --git a/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json b/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json index 329e89245..a92066322 100644 --- a/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json +++ b/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json @@ -9,7 +9,11 @@ "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", - "storage": + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } }, { "address": "0x3200000000000000000000000000000000000001", diff --git a/bin/test-data/genesis/demo-tests/mock/evm.json b/bin/test-data/genesis/demo-tests/mock/evm.json index 1a968cf61..df9af3c12 100644 --- a/bin/test-data/genesis/demo-tests/mock/evm.json +++ b/bin/test-data/genesis/demo-tests/mock/evm.json @@ -53,7 +53,17 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json b/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json index 7dee2241c..8fe12bf11 100644 --- a/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json +++ b/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json @@ -8,7 +8,17 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/bin/test-data/genesis/integration-tests/evm.json b/bin/test-data/genesis/integration-tests/evm.json index 4f9cfc371..6395fd05f 100644 --- a/bin/test-data/genesis/integration-tests/evm.json +++ b/bin/test-data/genesis/integration-tests/evm.json @@ -8,7 +8,17 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json b/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json index 2a3a97857..4c18cc985 100644 --- a/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json +++ b/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blockHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByHash","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeBlockNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockInfo","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_witnessRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"witnessRoots","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"BlockInfoAdded","inputs":[{"name":"blockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"merkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b5060805161106361003d6000396000818161076e01528181610797015261093b01526110636000f3fe6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033","sourceMap":"791:4201:39:-:0;;;1171:4:32;1128:48;;791:4201:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033","sourceMap":"791:4201:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:130;;;;;;;;;;-1:-1:-1;2876:130:39;;;;;:::i;:::-;2949:7;2975:24;;;:12;:24;;;;;;;2876:130;;;;345:25:44;;;333:2;318:18;2876:130:39;;;;;;;;2102:395;;;;;;;;;;-1:-1:-1;2102:395:39;;;;;:::i;:::-;;:::i;:::-;;1524:174;;;;;;;;;;-1:-1:-1;1524:174:39;;;;;:::i;:::-;;:::i;1019:46::-;;;;;;;;;;-1:-1:-1;1019:46:39;;;;;:::i;:::-;;;;;;;;;;;;;;4158:214:32;;;;;;:::i;:::-;;:::i;4424:222:39:-;;;;;;;;;;-1:-1:-1;4424:222:39;;;;;:::i;:::-;;:::i;:::-;;;3265:14:44;;3258:22;3240:41;;3228:2;3213:18;4424:222:39;3100:187:44;3705:134:32;;;;;;;;;;;;;:::i;890:26:39:-;;;;;;;;;;;;;;;;3142:149;;;;;;;;;;-1:-1:-1;3142:149:39;;;;;:::i;:::-;3219:7;3258:25;;;:11;:25;;;;;;;;;3245:39;;:12;:39;;;;;;;3142:149;3155:101:30;;;;;;;;;;;;;:::i;2774:229:29:-;;;;;;;;;;;;;:::i;2441:144:30:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3638:32:44;;;3620:51;;3608:2;3593:18;2441:144:30;3474:203:44;1071:47:39;;;;;;;;;;-1:-1:-1;1071:47:39;;;;;:::i;:::-;;;;;;;;;;;;;;1819:58:32;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:32;;;;;;;;;;;;:::i;3753:205:39:-;;;;;;;;;;-1:-1:-1;3753:205:39;;;;;:::i;:::-;;:::i;922:91::-;;;;;;;;;;;;970:42;922:91;;1680:168:29;;;;;;;;;;;;;:::i;2618:125:39:-;;;;;;;;;;-1:-1:-1;2618:125:39;;;;;:::i;:::-;2685:7;2711:25;;;:11;:25;;;;;;;2618:125;2041:247:29;;;;;;;;;;-1:-1:-1;2041:247:29;;;;;:::i;:::-;;:::i;2102:395:39:-;1256:10;970:42;1256:27;1248:71;;;;-1:-1:-1;;;1248:71:39;;5350:2:44;1248:71:39;;;5332:21:44;5389:2;5369:18;;;5362:30;5428:33;5408:18;;;5401:61;5479:18;;1248:71:39;;;;;;;;;2196:20:::1;2219:11:::0;;;2248:17;;;2240:45:::1;;;::::0;-1:-1:-1;;;2240:45:39;;5710:2:44;2240:45:39::1;::::0;::::1;5692:21:44::0;5749:2;5729:18;;;5722:30;-1:-1:-1;;;5768:18:44;;;5761:45;5823:18;;2240:45:39::1;5508:339:44::0;2240:45:39::1;2295:25;::::0;;;:11:::1;:25;::::0;;;;;;;:38;;;2357:16:::1;::::0;2307:12;;2357:16:::1;:::i;:::-;2343:11;:30:::0;;;2383:24;;;:12:::1;:24;::::0;;;;;;;:39;;;2452:11;;2437:53;;6281:25:44;;;6322:18;;;6315:34;;;6365:18;;;6358:34;;;2437:53:39::1;::::0;6269:2:44;6254:18;2437:53:39::1;;;;;;;2186:311;2102:395:::0;;:::o;1524:174::-;1256:10;970:42;1256:27;1248:71;;;;-1:-1:-1;;;1248:71:39;;5350:2:44;1248:71:39;;;5332:21:44;5389:2;5369:18;;;5362:30;5428:33;5408:18;;;5401:61;5479:18;;1248:71:39;5148:355:44;1248:71:39;1615:11:::1;::::0;:16;1607:48:::1;;;::::0;-1:-1:-1;;;1607:48:39;;6605:2:44;1607:48:39::1;::::0;::::1;6587:21:44::0;6644:2;6624:18;;;6617:30;-1:-1:-1;;;6663:18:44;;;6656:49;6722:18;;1607:48:39::1;6403:343:44::0;1607:48:39::1;1665:11;:26:::0;1524:174::o;4158:214:32:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;4424:222:39:-;4549:4;4589:25;;;:11;:25;;;;;;4572:67;;4616:6;4624;;4632;4572:16;:67::i;:::-;4565:74;4424:222;-1:-1:-1;;;;;;4424:222:39:o;3705:134:32:-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:32;:::o;3155:101:30:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;2774:229:29:-;966:10:33;;2869:14:29;:12;:14::i;:::-;-1:-1:-1;;;;;2869:24:29;;2865:96;;2916:34;;-1:-1:-1;;;2916:34:29;;-1:-1:-1;;;;;3638:32:44;;2916:34:29;;;3620:51:44;3593:18;;2916:34:29;3474:203:44;2865:96:29;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;2441:144:30:-;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:30;;2441:144;-1:-1:-1;;2441:144:30:o;3753:205:39:-;3876:4;3899:52;3916:10;3928:6;3936;;3944;3899:16;:52::i;1680:168:29:-;1733:7;;1318:27;1784:25;1187:174;2041:247;2334:13:30;:11;:13::i;:::-;1318:27:29;2197:26;;-1:-1:-1;;;;;;2197:26:29::1;-1:-1:-1::0;;;;;2197:26:29;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;2238:43:29::1;;;;;;;;;;;2120:168;2041:247:::0;:::o;4599:312:32:-;4679:4;-1:-1:-1;;;;;4688:6:32;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:32;:32;-1:-1:-1;;;;;;;;;;;2035:53:35;-1:-1:-1;;;;;2035:53:35;;1957:138;4749:32:32;-1:-1:-1;;;;;4749:42:32;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:32;;;;;;;;;;;4924:66:39;2334:13:30;:11;:13::i;6052:538:32:-;6169:17;-1:-1:-1;;;;;6151:50:32;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:32;;;;;;;;-1:-1:-1;;6151:52:32;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:32;;-1:-1:-1;;;;;3638:32:44;;6513:60:32;;;3620:51:44;3593:18;;6513:60:32;3474:203:44;6147:437:32;-1:-1:-1;;;;;;;;;;;6245:40:32;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:32;;;;;345:25:44;;;318:18;;6312:34:32;199:177:44;6241:120:32;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;4652:266:39:-;4776:4;4815:24;;;:12;:24;;;;;;;;;4856:55;;;;;;;;;;;;;;;;;;;;4815:24;4856:55;;4874:6;;4815:24;;4856:55;4896:6;;;;;;4856:55;;4896:6;;;;4856:55;;;;;;;;;-1:-1:-1;4904:6:39;;-1:-1:-1;4856:17:39;;-1:-1:-1;;4856:55:39:i;:::-;4849:62;4652:266;-1:-1:-1;;;;;;;4652:266:39:o;5028:213:32:-;5102:4;-1:-1:-1;;;;;5111:6:32;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:32;;;;;;;;;;;2658:162:30;966:10:33;2717:7:30;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:30;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:30;;966:10:33;2763:40:30;;;3620:51:44;3593:18;;2763:40:30;3474:203:44;2472:222:29;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:29;;;2653:34;2678:8;2653:24;:34::i;2779:335:35:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:35;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;1685:539:5:-;1843:4;1913:11;1904:5;:20;:35;;;;-1:-1:-1;1928:11:5;;1904:35;:69;;;;-1:-1:-1;1943:25:5;;:30;1904:69;1900:111;;;-1:-1:-1;1996:4:5;1989:11;;1900:111;2083:134;2125:5;2144:18;2176:11;2201:6;2083:28;:134::i;:::-;2076:141;;1685:539;;;;;;;:::o;3774:248:30:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:30;;-1:-1:-1;;;;;3941:19:30;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;2186:281:35:-;2263:17;-1:-1:-1;;;;;2263:29:35;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:35;;-1:-1:-1;;;;;3638:32:44;;2320:47:35;;;3620:51:44;3593:18;;2320:47:35;3474:203:44;2259:119:35;-1:-1:-1;;;;;;;;;;;2387:73:35;;-1:-1:-1;;;;;;2387:73:35;-1:-1:-1;;;;;2387:73:35;;;;;;;;;;2186:281::o;4106:253:37:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:37;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;;;;4106:253;;;;;:::o;6598:122:35:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:35;;;;;;;;;;;36339:829:2;36492:4;36567:2;36552:5;:12;:17;;;;:::i;:::-;:22;36548:65;;-1:-1:-1;36597:5:2;36590:12;;36548:65;36657:5;:12;36673:1;36657:17;36653:60;;-1:-1:-1;36697:5:2;36690:12;;36653:60;36735:6;36770:5;36723:9;36825:303;36846:5;:12;36842:1;:16;36825:303;;;36887:8;36894:1;36887:4;:8;:::i;:::-;36899:1;36887:13;36883:205;;36931:46;36950:16;:5;36964:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;36950:16:2;36968:8;36931:18;:46::i;:::-;36920:57;;36883:205;;;37027:46;37046:8;37056:16;:5;37070:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;37056:16:2;37027:18;:46::i;:::-;37016:57;;36883:205;37116:1;37108:9;;;;;36860:7;36865:2;36860:7;;:::i;:::-;;;36825:303;;;-1:-1:-1;37144:17:2;;;;36339:829;-1:-1:-1;;;;;36339:829:2:o;4625:582:37:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:37;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:37;;-1:-1:-1;;;;;3638:32:44;;5121:24:37;;;3620:51:44;3593:18;;5121:24:37;3474:203:44;5041:119:37;-1:-1:-1;5180:10:37;4793:408;4625:582;;;;;:::o;34697:127:2:-;34772:7;34798:19;34810:2;34814;34798:11;:19::i;5743:516:37:-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:37;;;;;;;;;;;10264:386:2;10332:11;10455:2;10449:4;10442:16;10484:2;10478:4;10471:16;10541:2;10535:4;10531:2;10525:4;10522:1;10515:5;10504:40;10500:45;10599:2;10593:4;10589:2;10583:4;10580:1;10573:5;10562:40;-1:-1:-1;;10629:4:2;10623:11;;10264:386;-1:-1:-1;;10264:386:2:o;14:180:44:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:44;;14:180;-1:-1:-1;14:180:44:o;381:248::-;449:6;457;510:2;498:9;489:7;485:23;481:32;478:52;;;526:1;523;516:12;478:52;-1:-1:-1;;549:23:44;;;619:2;604:18;;;591:32;;-1:-1:-1;381:248:44:o;819:173::-;887:20;;-1:-1:-1;;;;;936:31:44;;926:42;;916:70;;982:1;979;972:12;916:70;819:173;;;:::o;997:127::-;1058:10;1053:3;1049:20;1046:1;1039:31;1089:4;1086:1;1079:15;1113:4;1110:1;1103:15;1129:995;1206:6;1214;1267:2;1255:9;1246:7;1242:23;1238:32;1235:52;;;1283:1;1280;1273:12;1235:52;1306:29;1325:9;1306:29;:::i;:::-;1296:39;;1386:2;1375:9;1371:18;1358:32;1409:18;1450:2;1442:6;1439:14;1436:34;;;1466:1;1463;1456:12;1436:34;1504:6;1493:9;1489:22;1479:32;;1549:7;1542:4;1538:2;1534:13;1530:27;1520:55;;1571:1;1568;1561:12;1520:55;1607:2;1594:16;1629:2;1625;1622:10;1619:36;;;1635:18;;:::i;:::-;1710:2;1704:9;1678:2;1764:13;;-1:-1:-1;;1760:22:44;;;1784:2;1756:31;1752:40;1740:53;;;1808:18;;;1828:22;;;1805:46;1802:72;;;1854:18;;:::i;:::-;1894:10;1890:2;1883:22;1929:2;1921:6;1914:18;1969:7;1964:2;1959;1955;1951:11;1947:20;1944:33;1941:53;;;1990:1;1987;1980:12;1941:53;2046:2;2041;2037;2033:11;2028:2;2020:6;2016:15;2003:46;2091:1;2086:2;2081;2073:6;2069:15;2065:24;2058:35;2112:6;2102:16;;;;;;;1129:995;;;;;:::o;2129:347::-;2180:8;2190:6;2244:3;2237:4;2229:6;2225:17;2221:27;2211:55;;2262:1;2259;2252:12;2211:55;-1:-1:-1;2285:20:44;;2328:18;2317:30;;2314:50;;;2360:1;2357;2350:12;2314:50;2397:4;2389:6;2385:17;2373:29;;2449:3;2442:4;2433:6;2425;2421:19;2417:30;2414:39;2411:59;;;2466:1;2463;2456:12;2411:59;2129:347;;;;;:::o;2481:614::-;2578:6;2586;2594;2602;2610;2663:3;2651:9;2642:7;2638:23;2634:33;2631:53;;;2680:1;2677;2670:12;2631:53;2716:9;2703:23;2693:33;;2773:2;2762:9;2758:18;2745:32;2735:42;;2828:2;2817:9;2813:18;2800:32;2855:18;2847:6;2844:30;2841:50;;;2887:1;2884;2877:12;2841:50;2926:58;2976:7;2967:6;2956:9;2952:22;2926:58;:::i;:::-;2481:614;;;;-1:-1:-1;3003:8:44;3085:2;3070:18;3057:32;;2481:614;-1:-1:-1;;;;2481:614:44:o;3682:250::-;3767:1;3777:113;3791:6;3788:1;3785:13;3777:113;;;3867:11;;;3861:18;3848:11;;;3841:39;3813:2;3806:10;3777:113;;;-1:-1:-1;;3924:1:44;3906:16;;3899:27;3682:250::o;3937:396::-;4086:2;4075:9;4068:21;4049:4;4118:6;4112:13;4161:6;4156:2;4145:9;4141:18;4134:34;4177:79;4249:6;4244:2;4233:9;4229:18;4224:2;4216:6;4212:15;4177:79;:::i;:::-;4317:2;4296:15;-1:-1:-1;;4292:29:44;4277:45;;;;4324:2;4273:54;;3937:396;-1:-1:-1;;3937:396:44:o;4957:186::-;5016:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:52;;;5085:1;5082;5075:12;5037:52;5108:29;5127:9;5108:29;:::i;5852:222::-;5917:9;;;5938:10;;;5935:133;;;5990:10;5985:3;5981:20;5978:1;5971:31;6025:4;6022:1;6015:15;6053:4;6050:1;6043:15;6751:184;6821:6;6874:2;6862:9;6853:7;6849:23;6845:32;6842:52;;;6890:1;6887;6880:12;6842:52;-1:-1:-1;6913:16:44;;6751:184;-1:-1:-1;6751:184:44:o;6940:287::-;7069:3;7107:6;7101:13;7123:66;7182:6;7177:3;7170:4;7162:6;7158:17;7123:66;:::i;:::-;7205:16;;;;;6940:287;-1:-1:-1;;6940:287:44:o;7232:209::-;7264:1;7290;7280:132;;7334:10;7329:3;7325:20;7322:1;7315:31;7369:4;7366:1;7359:15;7397:4;7394:1;7387:15;7280:132;-1:-1:-1;7426:9:44;;7232:209::o","linkReferences":{},"immutableReferences":{"50641":[{"start":1902,"length":32},{"start":1943,"length":32},{"start":2363,"length":32}]}},"methodIdentifiers":{"SYSTEM_CALLER()":"d761753e","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptOwnership()":"79ba5097","blockHashes(uint256)":"34cdf78d","blockNumber()":"57e871e7","getBlockHash(uint256)":"ee82ac5e","getWitnessRootByHash(bytes32)":"0466efc4","getWitnessRootByNumber(uint256)":"61b207e2","initializeBlockNumber(uint256)":"1f578333","owner()":"8da5cb5b","pendingOwner()":"e30c3978","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setBlockInfo(bytes32,bytes32)":"0e27bc11","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","verifyInclusion(bytes32,bytes32,bytes,uint256)":"d269a03e","verifyInclusion(uint256,bytes32,bytes,uint256)":"4ffd344a","witnessRoots(bytes32)":"a91d8b3d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockInfoAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"}],\"name\":\"getWitnessRootByHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getWitnessRootByNumber\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"initializeBlockNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_witnessRoot\",\"type\":\"bytes32\"}],\"name\":\"setBlockInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"witnessRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"getBlockHash(uint256)\":{\"params\":{\"_blockNumber\":\"Number of the block to get the hash for\"},\"returns\":{\"_0\":\"Block hash for the given block\"}},\"getWitnessRootByHash(bytes32)\":{\"params\":{\"_blockHash\":\"Block hash of the block to get the witness root for\"},\"returns\":{\"_0\":\"Witness root for the given block\"}},\"getWitnessRootByNumber(uint256)\":{\"params\":{\"_blockNumber\":\"Block number of the block to get the witness root for\"},\"returns\":{\"_0\":\"Merkle root for the given block\"}},\"initializeBlockNumber(uint256)\":{\"params\":{\"_blockNumber\":\"L1 block number that is associated with the genesis block of Citrea\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setBlockInfo(bytes32,bytes32)\":{\"details\":\"Block number is incremented by the contract as no block info should be overwritten or skipped\",\"params\":{\"_blockHash\":\"Hash of the current L1 block\",\"_witnessRoot\":\"Witness root of the current L1 block, must be in little endian \"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockHash\":\"Block hash of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockNumber\":\"Block number of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}}},\"title\":\"A system contract that stores block hashes and witness root hashes of L1 blocks\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initializeBlockNumber(uint256)\":{\"notice\":\"Sets the initial value for the block number, can only be called once\"},\"setBlockInfo(bytes32,bytes32)\":{\"notice\":\"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BitcoinLightClient.sol\":\"BitcoinLightClient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/Ownable.sol\":{\"keccak256\":\"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee\",\"dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e\",\"dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"BlockInfoAdded","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getWitnessRootByHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWitnessRootByNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initializeBlockNumber"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_witnessRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockInfo"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"witnessRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"getBlockHash(uint256)":{"params":{"_blockNumber":"Number of the block to get the hash for"},"returns":{"_0":"Block hash for the given block"}},"getWitnessRootByHash(bytes32)":{"params":{"_blockHash":"Block hash of the block to get the witness root for"},"returns":{"_0":"Witness root for the given block"}},"getWitnessRootByNumber(uint256)":{"params":{"_blockNumber":"Block number of the block to get the witness root for"},"returns":{"_0":"Merkle root for the given block"}},"initializeBlockNumber(uint256)":{"params":{"_blockNumber":"L1 block number that is associated with the genesis block of Citrea"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setBlockInfo(bytes32,bytes32)":{"details":"Block number is incremented by the contract as no block info should be overwritten or skipped","params":{"_blockHash":"Hash of the current L1 block","_witnessRoot":"Witness root of the current L1 block, must be in little endian "}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockHash":"Block hash of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockNumber":"Block number of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}}},"version":1},"userdoc":{"kind":"user","methods":{"initializeBlockNumber(uint256)":{"notice":"Sets the initial value for the block number, can only be called once"},"setBlockInfo(bytes32,bytes32)":{"notice":"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set"},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/BitcoinLightClient.sol":"BitcoinLightClient"},"evmVersion":"paris","libraries":{}},"sources":{"lib/Ownable.sol":{"keccak256":"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07","urls":["bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee","dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94"],"license":"MIT"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f","urls":["bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e","dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV"],"license":"MIT"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":39} \ No newline at end of file +{"abi":[{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blockHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByHash","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeBlockNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockInfo","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_witnessRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"witnessRoots","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"BlockInfoAdded","inputs":[{"name":"blockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"merkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b5060805161106361003d6000396000818161076e01528181610797015261093b01526110636000f3fe6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033","sourceMap":"791:4201:41:-:0;;;1171:4:32;1128:48;;791:4201:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033","sourceMap":"791:4201:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:130;;;;;;;;;;-1:-1:-1;2876:130:41;;;;;:::i;:::-;2949:7;2975:24;;;:12;:24;;;;;;;2876:130;;;;345:25:46;;;333:2;318:18;2876:130:41;;;;;;;;2102:395;;;;;;;;;;-1:-1:-1;2102:395:41;;;;;:::i;:::-;;:::i;:::-;;1524:174;;;;;;;;;;-1:-1:-1;1524:174:41;;;;;:::i;:::-;;:::i;1019:46::-;;;;;;;;;;-1:-1:-1;1019:46:41;;;;;:::i;:::-;;;;;;;;;;;;;;4158:214:32;;;;;;:::i;:::-;;:::i;4424:222:41:-;;;;;;;;;;-1:-1:-1;4424:222:41;;;;;:::i;:::-;;:::i;:::-;;;3265:14:46;;3258:22;3240:41;;3228:2;3213:18;4424:222:41;3100:187:46;3705:134:32;;;;;;;;;;;;;:::i;890:26:41:-;;;;;;;;;;;;;;;;3142:149;;;;;;;;;;-1:-1:-1;3142:149:41;;;;;:::i;:::-;3219:7;3258:25;;;:11;:25;;;;;;;;;3245:39;;:12;:39;;;;;;;3142:149;3155:101:30;;;;;;;;;;;;;:::i;2774:229:29:-;;;;;;;;;;;;;:::i;2441:144:30:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3638:32:46;;;3620:51;;3608:2;3593:18;2441:144:30;3474:203:46;1071:47:41;;;;;;;;;;-1:-1:-1;1071:47:41;;;;;:::i;:::-;;;;;;;;;;;;;;1819:58:32;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:32;;;;;;;;;;;;:::i;3753:205:41:-;;;;;;;;;;-1:-1:-1;3753:205:41;;;;;:::i;:::-;;:::i;922:91::-;;;;;;;;;;;;970:42;922:91;;1680:168:29;;;;;;;;;;;;;:::i;2618:125:41:-;;;;;;;;;;-1:-1:-1;2618:125:41;;;;;:::i;:::-;2685:7;2711:25;;;:11;:25;;;;;;;2618:125;2041:247:29;;;;;;;;;;-1:-1:-1;2041:247:29;;;;;:::i;:::-;;:::i;2102:395:41:-;1256:10;970:42;1256:27;1248:71;;;;-1:-1:-1;;;1248:71:41;;5350:2:46;1248:71:41;;;5332:21:46;5389:2;5369:18;;;5362:30;5428:33;5408:18;;;5401:61;5479:18;;1248:71:41;;;;;;;;;2196:20:::1;2219:11:::0;;;2248:17;;;2240:45:::1;;;::::0;-1:-1:-1;;;2240:45:41;;5710:2:46;2240:45:41::1;::::0;::::1;5692:21:46::0;5749:2;5729:18;;;5722:30;-1:-1:-1;;;5768:18:46;;;5761:45;5823:18;;2240:45:41::1;5508:339:46::0;2240:45:41::1;2295:25;::::0;;;:11:::1;:25;::::0;;;;;;;:38;;;2357:16:::1;::::0;2307:12;;2357:16:::1;:::i;:::-;2343:11;:30:::0;;;2383:24;;;:12:::1;:24;::::0;;;;;;;:39;;;2452:11;;2437:53;;6281:25:46;;;6322:18;;;6315:34;;;6365:18;;;6358:34;;;2437:53:41::1;::::0;6269:2:46;6254:18;2437:53:41::1;;;;;;;2186:311;2102:395:::0;;:::o;1524:174::-;1256:10;970:42;1256:27;1248:71;;;;-1:-1:-1;;;1248:71:41;;5350:2:46;1248:71:41;;;5332:21:46;5389:2;5369:18;;;5362:30;5428:33;5408:18;;;5401:61;5479:18;;1248:71:41;5148:355:46;1248:71:41;1615:11:::1;::::0;:16;1607:48:::1;;;::::0;-1:-1:-1;;;1607:48:41;;6605:2:46;1607:48:41::1;::::0;::::1;6587:21:46::0;6644:2;6624:18;;;6617:30;-1:-1:-1;;;6663:18:46;;;6656:49;6722:18;;1607:48:41::1;6403:343:46::0;1607:48:41::1;1665:11;:26:::0;1524:174::o;4158:214:32:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;4424:222:41:-;4549:4;4589:25;;;:11;:25;;;;;;4572:67;;4616:6;4624;;4632;4572:16;:67::i;:::-;4565:74;4424:222;-1:-1:-1;;;;;;4424:222:41:o;3705:134:32:-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:32;:::o;3155:101:30:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;2774:229:29:-;966:10:33;;2869:14:29;:12;:14::i;:::-;-1:-1:-1;;;;;2869:24:29;;2865:96;;2916:34;;-1:-1:-1;;;2916:34:29;;-1:-1:-1;;;;;3638:32:46;;2916:34:29;;;3620:51:46;3593:18;;2916:34:29;3474:203:46;2865:96:29;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;2441:144:30:-;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:30;;2441:144;-1:-1:-1;;2441:144:30:o;3753:205:41:-;3876:4;3899:52;3916:10;3928:6;3936;;3944;3899:16;:52::i;1680:168:29:-;1733:7;;1318:27;1784:25;1187:174;2041:247;2334:13:30;:11;:13::i;:::-;1318:27:29;2197:26;;-1:-1:-1;;;;;;2197:26:29::1;-1:-1:-1::0;;;;;2197:26:29;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;2238:43:29::1;;;;;;;;;;;2120:168;2041:247:::0;:::o;4599:312:32:-;4679:4;-1:-1:-1;;;;;4688:6:32;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:32;:32;-1:-1:-1;;;;;;;;;;;2035:53:36;-1:-1:-1;;;;;2035:53:36;;1957:138;4749:32:32;-1:-1:-1;;;;;4749:42:32;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:32;;;;;;;;;;;4924:66:41;2334:13:30;:11;:13::i;6052:538:32:-;6169:17;-1:-1:-1;;;;;6151:50:32;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:32;;;;;;;;-1:-1:-1;;6151:52:32;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:32;;-1:-1:-1;;;;;3638:32:46;;6513:60:32;;;3620:51:46;3593:18;;6513:60:32;3474:203:46;6147:437:32;-1:-1:-1;;;;;;;;;;;6245:40:32;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:32;;;;;345:25:46;;;318:18;;6312:34:32;199:177:46;6241:120:32;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;4652:266:41:-;4776:4;4815:24;;;:12;:24;;;;;;;;;4856:55;;;;;;;;;;;;;;;;;;;;4815:24;4856:55;;4874:6;;4815:24;;4856:55;4896:6;;;;;;4856:55;;4896:6;;;;4856:55;;;;;;;;;-1:-1:-1;4904:6:41;;-1:-1:-1;4856:17:41;;-1:-1:-1;;4856:55:41:i;:::-;4849:62;4652:266;-1:-1:-1;;;;;;;4652:266:41:o;5028:213:32:-;5102:4;-1:-1:-1;;;;;5111:6:32;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:32;;;;;;;;;;;2658:162:30;966:10:33;2717:7:30;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:30;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:30;;966:10:33;2763:40:30;;;3620:51:46;3593:18;;2763:40:30;3474:203:46;2472:222:29;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:29;;;2653:34;2678:8;2653:24;:34::i;2779:335:36:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:36;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;1685:539:5:-;1843:4;1913:11;1904:5;:20;:35;;;;-1:-1:-1;1928:11:5;;1904:35;:69;;;;-1:-1:-1;1943:25:5;;:30;1904:69;1900:111;;;-1:-1:-1;1996:4:5;1989:11;;1900:111;2083:134;2125:5;2144:18;2176:11;2201:6;2083:28;:134::i;:::-;2076:141;;1685:539;;;;;;;:::o;3774:248:30:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:30;;-1:-1:-1;;;;;3941:19:30;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;2186:281:36:-;2263:17;-1:-1:-1;;;;;2263:29:36;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:36;;-1:-1:-1;;;;;3638:32:46;;2320:47:36;;;3620:51:46;3593:18;;2320:47:36;3474:203:46;2259:119:36;-1:-1:-1;;;;;;;;;;;2387:73:36;;-1:-1:-1;;;;;;2387:73:36;-1:-1:-1;;;;;2387:73:36;;;;;;;;;;2186:281::o;4106:253:39:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:39;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;;;;4106:253;;;;;:::o;6598:122:36:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:36;;;;;;;;;;;36339:829:2;36492:4;36567:2;36552:5;:12;:17;;;;:::i;:::-;:22;36548:65;;-1:-1:-1;36597:5:2;36590:12;;36548:65;36657:5;:12;36673:1;36657:17;36653:60;;-1:-1:-1;36697:5:2;36690:12;;36653:60;36735:6;36770:5;36723:9;36825:303;36846:5;:12;36842:1;:16;36825:303;;;36887:8;36894:1;36887:4;:8;:::i;:::-;36899:1;36887:13;36883:205;;36931:46;36950:16;:5;36964:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;36950:16:2;36968:8;36931:18;:46::i;:::-;36920:57;;36883:205;;;37027:46;37046:8;37056:16;:5;37070:1;12550:28:3;12566:2;12550:28;12544:35;;12417:178;37056:16:2;37027:18;:46::i;:::-;37016:57;;36883:205;37116:1;37108:9;;;;;36860:7;36865:2;36860:7;;:::i;:::-;;;36825:303;;;-1:-1:-1;37144:17:2;;;;36339:829;-1:-1:-1;;;;;36339:829:2:o;4625:582:39:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:39;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:39;;-1:-1:-1;;;;;3638:32:46;;5121:24:39;;;3620:51:46;3593:18;;5121:24:39;3474:203:46;5041:119:39;-1:-1:-1;5180:10:39;4793:408;4625:582;;;;;:::o;34697:127:2:-;34772:7;34798:19;34810:2;34814;34798:11;:19::i;5743:516:39:-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:39;;;;;;;;;;;10264:386:2;10332:11;10455:2;10449:4;10442:16;10484:2;10478:4;10471:16;10541:2;10535:4;10531:2;10525:4;10522:1;10515:5;10504:40;10500:45;10599:2;10593:4;10589:2;10583:4;10580:1;10573:5;10562:40;-1:-1:-1;;10629:4:2;10623:11;;10264:386;-1:-1:-1;;10264:386:2:o;14:180:46:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:46;;14:180;-1:-1:-1;14:180:46:o;381:248::-;449:6;457;510:2;498:9;489:7;485:23;481:32;478:52;;;526:1;523;516:12;478:52;-1:-1:-1;;549:23:46;;;619:2;604:18;;;591:32;;-1:-1:-1;381:248:46:o;819:173::-;887:20;;-1:-1:-1;;;;;936:31:46;;926:42;;916:70;;982:1;979;972:12;916:70;819:173;;;:::o;997:127::-;1058:10;1053:3;1049:20;1046:1;1039:31;1089:4;1086:1;1079:15;1113:4;1110:1;1103:15;1129:995;1206:6;1214;1267:2;1255:9;1246:7;1242:23;1238:32;1235:52;;;1283:1;1280;1273:12;1235:52;1306:29;1325:9;1306:29;:::i;:::-;1296:39;;1386:2;1375:9;1371:18;1358:32;1409:18;1450:2;1442:6;1439:14;1436:34;;;1466:1;1463;1456:12;1436:34;1504:6;1493:9;1489:22;1479:32;;1549:7;1542:4;1538:2;1534:13;1530:27;1520:55;;1571:1;1568;1561:12;1520:55;1607:2;1594:16;1629:2;1625;1622:10;1619:36;;;1635:18;;:::i;:::-;1710:2;1704:9;1678:2;1764:13;;-1:-1:-1;;1760:22:46;;;1784:2;1756:31;1752:40;1740:53;;;1808:18;;;1828:22;;;1805:46;1802:72;;;1854:18;;:::i;:::-;1894:10;1890:2;1883:22;1929:2;1921:6;1914:18;1969:7;1964:2;1959;1955;1951:11;1947:20;1944:33;1941:53;;;1990:1;1987;1980:12;1941:53;2046:2;2041;2037;2033:11;2028:2;2020:6;2016:15;2003:46;2091:1;2086:2;2081;2073:6;2069:15;2065:24;2058:35;2112:6;2102:16;;;;;;;1129:995;;;;;:::o;2129:347::-;2180:8;2190:6;2244:3;2237:4;2229:6;2225:17;2221:27;2211:55;;2262:1;2259;2252:12;2211:55;-1:-1:-1;2285:20:46;;2328:18;2317:30;;2314:50;;;2360:1;2357;2350:12;2314:50;2397:4;2389:6;2385:17;2373:29;;2449:3;2442:4;2433:6;2425;2421:19;2417:30;2414:39;2411:59;;;2466:1;2463;2456:12;2411:59;2129:347;;;;;:::o;2481:614::-;2578:6;2586;2594;2602;2610;2663:3;2651:9;2642:7;2638:23;2634:33;2631:53;;;2680:1;2677;2670:12;2631:53;2716:9;2703:23;2693:33;;2773:2;2762:9;2758:18;2745:32;2735:42;;2828:2;2817:9;2813:18;2800:32;2855:18;2847:6;2844:30;2841:50;;;2887:1;2884;2877:12;2841:50;2926:58;2976:7;2967:6;2956:9;2952:22;2926:58;:::i;:::-;2481:614;;;;-1:-1:-1;3003:8:46;3085:2;3070:18;3057:32;;2481:614;-1:-1:-1;;;;2481:614:46:o;3682:250::-;3767:1;3777:113;3791:6;3788:1;3785:13;3777:113;;;3867:11;;;3861:18;3848:11;;;3841:39;3813:2;3806:10;3777:113;;;-1:-1:-1;;3924:1:46;3906:16;;3899:27;3682:250::o;3937:396::-;4086:2;4075:9;4068:21;4049:4;4118:6;4112:13;4161:6;4156:2;4145:9;4141:18;4134:34;4177:79;4249:6;4244:2;4233:9;4229:18;4224:2;4216:6;4212:15;4177:79;:::i;:::-;4317:2;4296:15;-1:-1:-1;;4292:29:46;4277:45;;;;4324:2;4273:54;;3937:396;-1:-1:-1;;3937:396:46:o;4957:186::-;5016:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:52;;;5085:1;5082;5075:12;5037:52;5108:29;5127:9;5108:29;:::i;5852:222::-;5917:9;;;5938:10;;;5935:133;;;5990:10;5985:3;5981:20;5978:1;5971:31;6025:4;6022:1;6015:15;6053:4;6050:1;6043:15;6751:184;6821:6;6874:2;6862:9;6853:7;6849:23;6845:32;6842:52;;;6890:1;6887;6880:12;6842:52;-1:-1:-1;6913:16:46;;6751:184;-1:-1:-1;6751:184:46:o;6940:287::-;7069:3;7107:6;7101:13;7123:66;7182:6;7177:3;7170:4;7162:6;7158:17;7123:66;:::i;:::-;7205:16;;;;;6940:287;-1:-1:-1;;6940:287:46:o;7232:209::-;7264:1;7290;7280:132;;7334:10;7329:3;7325:20;7322:1;7315:31;7369:4;7366:1;7359:15;7397:4;7394:1;7387:15;7280:132;-1:-1:-1;7426:9:46;;7232:209::o","linkReferences":{},"immutableReferences":{"50641":[{"start":1902,"length":32},{"start":1943,"length":32},{"start":2363,"length":32}]}},"methodIdentifiers":{"SYSTEM_CALLER()":"d761753e","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptOwnership()":"79ba5097","blockHashes(uint256)":"34cdf78d","blockNumber()":"57e871e7","getBlockHash(uint256)":"ee82ac5e","getWitnessRootByHash(bytes32)":"0466efc4","getWitnessRootByNumber(uint256)":"61b207e2","initializeBlockNumber(uint256)":"1f578333","owner()":"8da5cb5b","pendingOwner()":"e30c3978","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setBlockInfo(bytes32,bytes32)":"0e27bc11","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","verifyInclusion(bytes32,bytes32,bytes,uint256)":"d269a03e","verifyInclusion(uint256,bytes32,bytes,uint256)":"4ffd344a","witnessRoots(bytes32)":"a91d8b3d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockInfoAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"}],\"name\":\"getWitnessRootByHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getWitnessRootByNumber\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"initializeBlockNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_witnessRoot\",\"type\":\"bytes32\"}],\"name\":\"setBlockInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"witnessRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"getBlockHash(uint256)\":{\"params\":{\"_blockNumber\":\"Number of the block to get the hash for\"},\"returns\":{\"_0\":\"Block hash for the given block\"}},\"getWitnessRootByHash(bytes32)\":{\"params\":{\"_blockHash\":\"Block hash of the block to get the witness root for\"},\"returns\":{\"_0\":\"Witness root for the given block\"}},\"getWitnessRootByNumber(uint256)\":{\"params\":{\"_blockNumber\":\"Block number of the block to get the witness root for\"},\"returns\":{\"_0\":\"Merkle root for the given block\"}},\"initializeBlockNumber(uint256)\":{\"params\":{\"_blockNumber\":\"L1 block number that is associated with the genesis block of Citrea\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setBlockInfo(bytes32,bytes32)\":{\"details\":\"Block number is incremented by the contract as no block info should be overwritten or skipped\",\"params\":{\"_blockHash\":\"Hash of the current L1 block\",\"_witnessRoot\":\"Witness root of the current L1 block, must be in little endian \"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockHash\":\"Block hash of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockNumber\":\"Block number of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}}},\"title\":\"A system contract that stores block hashes and witness root hashes of L1 blocks\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initializeBlockNumber(uint256)\":{\"notice\":\"Sets the initial value for the block number, can only be called once\"},\"setBlockInfo(bytes32,bytes32)\":{\"notice\":\"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BitcoinLightClient.sol\":\"BitcoinLightClient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/Ownable.sol\":{\"keccak256\":\"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee\",\"dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e\",\"dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"BlockInfoAdded","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getWitnessRootByHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWitnessRootByNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initializeBlockNumber"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_witnessRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockInfo"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"witnessRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"getBlockHash(uint256)":{"params":{"_blockNumber":"Number of the block to get the hash for"},"returns":{"_0":"Block hash for the given block"}},"getWitnessRootByHash(bytes32)":{"params":{"_blockHash":"Block hash of the block to get the witness root for"},"returns":{"_0":"Witness root for the given block"}},"getWitnessRootByNumber(uint256)":{"params":{"_blockNumber":"Block number of the block to get the witness root for"},"returns":{"_0":"Merkle root for the given block"}},"initializeBlockNumber(uint256)":{"params":{"_blockNumber":"L1 block number that is associated with the genesis block of Citrea"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setBlockInfo(bytes32,bytes32)":{"details":"Block number is incremented by the contract as no block info should be overwritten or skipped","params":{"_blockHash":"Hash of the current L1 block","_witnessRoot":"Witness root of the current L1 block, must be in little endian "}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockHash":"Block hash of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockNumber":"Block number of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}}},"version":1},"userdoc":{"kind":"user","methods":{"initializeBlockNumber(uint256)":{"notice":"Sets the initial value for the block number, can only be called once"},"setBlockInfo(bytes32,bytes32)":{"notice":"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set"},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/BitcoinLightClient.sol":"BitcoinLightClient"},"evmVersion":"paris","libraries":{}},"sources":{"lib/Ownable.sol":{"keccak256":"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07","urls":["bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee","dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94"],"license":"MIT"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f","urls":["bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e","dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV"],"license":"MIT"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":41} \ No newline at end of file diff --git a/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json b/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json index 6f211f5d5..c80794033 100644 --- a/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json +++ b/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"LIGHT_CLIENT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract BitcoinLightClient"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchWithdraw","inputs":[{"name":"bitcoin_addresses","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposit","inputs":[{"name":"p","type":"tuple","internalType":"struct Bridge.DepositParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositScript","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"},{"name":"_owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requiredSigsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"scriptSuffix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setDepositScript","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"spentWtxIds","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"bitcoin_address","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawalAddrs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Deposit","inputs":[{"name":"wtxId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DepositScriptUpdate","inputs":[{"name":"depositScript","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"scriptSuffix","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"requiredSigsCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"oldOperator","type":"address","indexed":false,"internalType":"address"},{"name":"newOperator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferRequested","inputs":[{"name":"previousOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"name":"bitcoin_address","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50600080546001600160a01b0319163317905561252d806100316000396000f3fe6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033","sourceMap":"336:8765:30:-:0;;;;;;;;;;;;-1:-1:-1;561:5:0;:18;;-1:-1:-1;;;;;;561:18:0;569:10;561:18;;;336:8765:30;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033","sourceMap":"336:8765:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;908:23;;;;;;;;;;-1:-1:-1;908:23:30;;;;-1:-1:-1;;;908:23:30;;;;;;;;;179:14:33;;172:22;154:41;;142:2;127:18;908:23:30;;;;;;;;1023:32;;;;;;;;;;;;;;;;;;;352:25:33;;;340:2;325:18;1023:32:30;206:177:33;2159:850:30;;;;;;;;;;-1:-1:-1;2159:850:30;;;;;:::i;:::-;;:::i;:::-;;994:23;;;;;;;;;;-1:-1:-1;994:23:30;;;;-1:-1:-1;;;;;994:23:30;;;;;;-1:-1:-1;;;;;1947:32:33;;;1929:51;;1917:2;1902:18;994:23:30;1783:203:33;7220:440:30;;;;;;:::i;:::-;;:::i;1129:43::-;;;;;;;;;;-1:-1:-1;1129:43:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;592:135:0;;;;;;;;;;;;;:::i;7723:108:30:-;;;;;;;;;;-1:-1:-1;7802:15:30;:22;7723:108;;899:218:0;;;;;;;;;;;;;:::i;1093:25:30:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;90:20:0:-;;;;;;;;;;-1:-1:-1;90:20:0;;;;-1:-1:-1;;;;;90:20:0;;;6674:301:30;;;;;;:::i;:::-;;:::i;3502:505::-;;;;;;;;;;-1:-1:-1;3502:505:30;;;;;:::i;:::-;;:::i;7974:147::-;;;;;;;;;;-1:-1:-1;7974:147:30;;;;;:::i;:::-;;:::i;1061:26::-;;;;;;;;;;;;;:::i;1178:32::-;;;;;;;;;;-1:-1:-1;1178:32:30;;;;;:::i;:::-;;:::i;810:91::-;;;;;;;;;;;;858:42;810:91;;4235:2185;;;;;;;;;;-1:-1:-1;4235:2185:30;;;;;:::i;:::-;;:::i;116:27:0:-;;;;;;;;;;-1:-1:-1;116:27:0;;;;-1:-1:-1;;;;;116:27:0;;;683:121:30;;;;;;;;;;;;-1:-1:-1;;;;;683:121:30;;937:51;;;;;;;;;;;;978:10;937:51;;733:160:0;;;;;;;;;;-1:-1:-1;733:160:0;;;;;:::i;:::-;;:::i;2159:850:30:-;1583:10;858:42;1583:27;1575:71;;;;-1:-1:-1;;;1575:71:30;;5532:2:33;1575:71:30;;;5514:21:33;5571:2;5551:18;;;5544:30;5610:33;5590:18;;;5583:61;5661:18;;1575:71:30;;;;;;;;;2323:11:::1;::::0;-1:-1:-1;;;2323:11:30;::::1;;;2322:12;2314:56;;;::::0;-1:-1:-1;;;2314:56:30;;5892:2:33;2314:56:30::1;::::0;::::1;5874:21:33::0;5931:2;5911:18;;;5904:30;5970:33;5950:18;;;5943:61;6021:18;;2314:56:30::1;5690:355:33::0;2314:56:30::1;2388:18;2410:1;2388:23:::0;2380:62:::1;;;::::0;-1:-1:-1;;;2380:62:30;;6252:2:33;2380:62:30::1;::::0;::::1;6234:21:33::0;6291:2;6271:18;;;6264:30;6330:28;6310:18;;;6303:56;6376:18;;2380:62:30::1;6050:350:33::0;2380:62:30::1;2485:1;2460:26:::0;;;2452:69:::1;;;::::0;-1:-1:-1;;;2452:69:30;;6607:2:33;2452:69:30::1;::::0;::::1;6589:21:33::0;6646:2;6626:18;;;6619:30;6685:32;6665:18;;;6658:60;6735:18;;2452:69:30::1;6405:354:33::0;2452:69:30::1;2546:4;2532:18:::0;;-1:-1:-1;;;;2532:18:30::1;-1:-1:-1::0;;;2532:18:30::1;::::0;;2560:13:::1;:30;2576:14:::0;;2560:13;:30:::1;:::i;:::-;-1:-1:-1::0;2600:12:30::1;:28;2615:13:::0;;2600:12;:28:::1;:::i;:::-;-1:-1:-1::0;2638:17:30::1;:38:::0;;;2811:8:::1;:24:::0;;858:42:::1;-1:-1:-1::0;;;;;;2811:24:30;;::::1;::::0;::::1;::::0;;;-1:-1:-1;2845:14:30;;;;::::1;-1:-1:-1::0;;;;;2845:14:30;::::1;;::::0;;2875:42:::1;::::0;;9543:34:33;;;9608:2;9593:18;;9586:43;;;;2875:42:30::1;::::0;9478:18:33;2875:42:30::1;;;;;;;2932:70;2952:14;;2968:13;;2983:18;2932:70;;;;;;;;;;:::i;:::-;;;;;;;;2159:850:::0;;;;;;:::o;7220:440::-;7329:41;7346:17;978:10;7329:41;:::i;:::-;7316:9;:54;7308:90;;;;-1:-1:-1;;;7308:90:30;;10925:2:33;7308:90:30;;;10907:21:33;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:33;;;10976:53;11046:18;;7308:90:30;10723:347:33;7308:90:30;7424:15;:22;7408:13;7456:198;7473:28;;;7456:198;;;7522:15;7543:17;;7561:1;7543:20;;;;;;;:::i;:::-;7522:42;;;;;;;-1:-1:-1;7522:42:30;;;7543:20;7522:42;;;;7543:20;;;;;;;;;7522:42;;;;;-1:-1:-1;7583:60:30;7594:17;;7612:1;7594:20;;;;;;;:::i;:::-;;;;;;;7624:1;7616:5;:9;;;;:::i;:::-;7583:60;;;11539:25:33;;;11595:2;11580:18;;11573:34;;;;7627:15:30;11623:18:33;;;11616:34;11527:2;11512:18;7583:60:30;;;;;;;7503:3;;7456:198;;;;7298:362;7220:440;;:::o;592:135:0:-;356:5;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;664:1:::1;648:18:::0;;-1:-1:-1;;;;;;648:18:0::1;::::0;;681:39:::1;::::0;;9543:34:33;;;9608:2;9593:18;;9586:43;;;;681:39:0::1;::::0;9478:18:33;681:39:0::1;;;;;;;592:135::o:0;899:218::-;469:12;;-1:-1:-1;;;;;469:12:0;455:10;:26;447:66;;;;-1:-1:-1;;;447:66:0;;12211:2:33;447:66:0;;;12193:21:33;12250:2;12230:18;;;12223:30;12289:29;12269:18;;;12262:57;12336:18;;447:66:0;12009:351:33;447:66:0;960:17:::1;980:5:::0;;;1003:12;;-1:-1:-1;;;;;;995:20:0;;::::1;-1:-1:-1::0;;;;;1003:12:0;;::::1;995:20:::0;;;::::1;::::0;;1025:25;::::1;::::0;;;1065:45:::1;::::0;;980:5;;;::::1;9543:34:33::0;;;9608:2;9593:18;;9586:43;;;;1065:45:0::1;::::0;9478:18:33;1065:45:0::1;;;;;;;;950:167;899:218::o:0;1093:25:30:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6674:301::-;978:10;6752:9;:27;6744:63;;;;-1:-1:-1;;;6744:63:30;;10925:2:33;6744:63:30;;;10907:21:33;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:33;;;10976:53;11046:18;;6744:63:30;10723:347:33;6744:63:30;6833:15;:22;;6865:37;;;;;-1:-1:-1;6865:37:30;;;;;;;;;;6917:51;;;11539:25:33;;;11595:2;11580:18;;11573:34;;;6952:15:30;11623:18:33;;;11616:34;6917:51:30;;;;;;;11527:2:33;6917:51:30;;;6734:241;6674:301;:::o;3502:505::-;356:5:0;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;3654:18:30::1;3676:1;3654:23:::0;3646:62:::1;;;::::0;-1:-1:-1;;;3646:62:30;;6252:2:33;3646:62:30::1;::::0;::::1;6234:21:33::0;6291:2;6271:18;;;6264:30;6330:28;6310:18;;;6303:56;6376:18;;3646:62:30::1;6050:350:33::0;3646:62:30::1;3751:1;3726:26:::0;;;3718:69:::1;;;::::0;-1:-1:-1;;;3718:69:30;;6607:2:33;3718:69:30::1;::::0;::::1;6589:21:33::0;6646:2;6626:18;;;6619:30;6685:32;6665:18;;;6658:60;6735:18;;3718:69:30::1;6405:354:33::0;3718:69:30::1;3798:13;:30;3814:14:::0;;3798:13;:30:::1;:::i;:::-;-1:-1:-1::0;3838:12:30::1;:28;3853:13:::0;;3838:12;:28:::1;:::i;:::-;-1:-1:-1::0;3876:17:30::1;:38:::0;;;3930:70:::1;::::0;::::1;::::0;::::1;::::0;3950:14;;;;3966:13;;;;3896:18;;3930:70:::1;:::i;:::-;;;;;;;;3502:505:::0;;;;;:::o;7974:147::-;356:5:0;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;8043:8:30::1;:20:::0;;-1:-1:-1;;;;;;8043:20:30::1;-1:-1:-1::0;;;;;8043:20:30;::::1;::::0;;::::1;::::0;;;8078:36:::1;::::0;;9543:34:33;;;9608:2;9593:18;;9586:43;;;;8078:36:30::1;::::0;9478:18:33;8078:36:30::1;9331:304:33::0;1061:26:30;;;;;;;:::i;1178:32::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1178:32:30;:::o;4235:2185::-;1726:8;;-1:-1:-1;;;;;1726:8:30;1712:10;:22;1704:61;;;;-1:-1:-1;;;1704:61:30;;12567:2:33;1704:61:30;;;12549:21:33;12606:2;12586:18;;;12579:30;12645:28;12625:18;;;12618:56;12691:18;;1704:61:30;12365:350:33;1704:61:30;4661:13:::1;4677:84;4705:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4716:6;::::0;;;::::1;::::0;::::1;;:::i;:::-;4724:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;4731:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4739:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4750:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4677:27;:84::i;:::-;4780:18;::::0;;;:11:::1;:18;::::0;;;;;4661:100;;-1:-1:-1;4780:18:30::1;;4779:19;4771:51;;;::::0;-1:-1:-1;;;4771:51:30;;14025:2:33;4771:51:30::1;::::0;::::1;14007:21:33::0;14064:2;14044:18;;;14037:30;-1:-1:-1;;;14083:18:33;;;14076:49;14142:18;;4771:51:30::1;13823:343:33::0;4771:51:30::1;4832:18;::::0;;;:11:::1;:18;::::0;;;;;;:25;;-1:-1:-1;;4832:25:30::1;4853:4;4832:25;::::0;;4876:27:::1;::::0;4897:5:::1;::::0;;::::1;:1:::0;:5:::1;:::i;:::-;4876:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4876:20:30::1;::::0;-1:-1:-1;;;4876:27:30:i:1;:::-;4868:69;;;::::0;-1:-1:-1;;;4868:69:30;;14373:2:33;4868:69:30::1;::::0;::::1;14355:21:33::0;14412:2;14392:18;;;14385:30;14451:31;14431:18;;;14424:59;14500:18;;4868:69:30::1;14171:353:33::0;4868:69:30::1;4955:29;4977:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4955:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4955:21:30::1;::::0;-1:-1:-1;;;4955:29:30:i:1;:::-;4947:72;;;::::0;-1:-1:-1;;;4947:72:30;;14731:2:33;4947:72:30::1;::::0;::::1;14713:21:33::0;14770:2;14750:18;;;14743:30;14809:32;14789:18;;;14782:60;14859:18;;4947:72:30::1;14529:354:33::0;4947:72:30::1;5041:13;5058:27;5079:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;5058:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5058:20:30::1;::::0;-1:-1:-1;;;5058:27:30:i:1;:::-;5038:47;;;5103:5;5112:1;5103:10;5095:45;;;::::0;-1:-1:-1;;;5095:45:30;;15090:2:33;5095:45:30::1;::::0;::::1;15072:21:33::0;15129:2;15109:18;;;15102:30;-1:-1:-1;;;15148:18:33;;;15141:52;15210:18;;5095:45:30::1;14888:346:33::0;5095:45:30::1;5209:46;5238:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5209:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5249:5:30;;-1:-1:-1;5209:28:30::1;::::0;-1:-1:-1;;5209:46:30:i:1;:::-;5201:92;;;::::0;-1:-1:-1;;;5201:92:30;;15441:2:33;5201:92:30::1;::::0;::::1;15423:21:33::0;15480:2;15460:18;;;15453:30;15519:34;15499:18;;;15492:62;-1:-1:-1;;;15570:18:33;;;15563:31;15611:19;;5201:92:30::1;15239:397:33::0;5201:92:30::1;-1:-1:-1::0;;;;;5312:28:30::1;5341:14;::::0;::::1;;5357:5:::0;5364:20:::1;;::::0;::::1;5341:1:::0;5364:20:::1;:::i;:::-;5386:1;:7;;;5312:82;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5304:122;;;::::0;-1:-1:-1;;;5304:122:30;;16589:2:33;5304:122:30::1;::::0;::::1;16571:21:33::0;16628:2;16608:18;;;16601:30;16667:29;16647:18;;;16640:57;16714:18;;5304:122:30::1;16387:351:33::0;5304:122:30::1;5437:21;5461:48;5496:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5461:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5461:48:30;-1:-1:-1;5461:34:30::1;::::0;-1:-1:-1;;5461:48:30:i:1;:::-;5437:72;;5522:15;5541:30;5562:8;5541:20;:30::i;:::-;5519:52;;;5600:17;;5620:1;5600:21;;;;:::i;:::-;5589:7;:32;5581:66;;;::::0;-1:-1:-1;;;5581:66:30;;16945:2:33;5581:66:30::1;::::0;::::1;16927:21:33::0;16984:2;16964:18;;;16957:30;-1:-1:-1;;;17003:18:33;;;16996:51;17064:18;;5581:66:30::1;16743:345:33::0;5581:66:30::1;5709:19;5731:64;5767:8;5777:17;;5731:35;:64::i;:::-;5709:86;;5805:12;5820:13;:20;;;;;:::i;:::-;::::0;-1:-1:-1;5850:27:30::1;::::0;-1:-1:-1;5880:21:30::1;:6:::0;5850:27;5820:20;5880:12:::1;:21::i;:::-;5850:51;;5919:43;5932:14;5948:13;5919:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:43::i;:::-;5911:78;;;::::0;-1:-1:-1;;;5911:78:30;;17295:2:33;5911:78:30::1;::::0;::::1;17277:21:33::0;17334:2;17314:18;;;17307:30;-1:-1:-1;;;17353:18:33;;;17346:52;17415:18;;5911:78:30::1;17093:346:33::0;5911:78:30::1;5999:20;6022:52;6035:9;:4:::0;6042:2:::1;6035:9;:::i;:::-;6063;:4:::0;6070:2:::1;6063:9;:::i;:::-;6046:6;:13;:27;;;;:::i;:::-;6022:6:::0;;:52;:12:::1;:52::i;:::-;5999:75;;6116:35;6129:7;6138:12;6116:35;;;;;:::i;:::-;6108:69;;;::::0;-1:-1:-1;;;6108:69:30;;17779:2:33;6108:69:30::1;::::0;::::1;17761:21:33::0;17818:2;17798:18;;;17791:30;-1:-1:-1;;;17837:18:33;;;17830:51;17898:18;;6108:69:30::1;17577:345:33::0;6108:69:30::1;6188:17;6208:31;6232:6;6208:23;:31::i;:::-;6255:42;::::0;;18129:25:33;;;-1:-1:-1;;;;;18190:32:33;;18185:2;18170:18;;18163:60;6281:15:30::1;18239:18:33::0;;;18232:34;6255:42:30;;18190:32:33;;-1:-1:-1;6255:42:30::1;::::0;;;;;18117:2:33;6255:42:30;;::::1;6309:12;6327:9;-1:-1:-1::0;;;;;6327:14:30::1;978:10;6327:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6308:60;;;6386:7;6378:35;;;::::0;-1:-1:-1;;;6378:35:30;;18689:2:33;6378:35:30::1;::::0;::::1;18671:21:33::0;18728:2;18708:18;;;18701:30;-1:-1:-1;;;18747:18:33;;;18740:45;18802:18;;6378:35:30::1;18487:339:33::0;6378:35:30::1;4314:2106;;;;;;;;;;4235:2185:::0;:::o;733:160:0:-;356:5;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;805:12:::1;:23:::0;;-1:-1:-1;;;;;;805:23:0::1;-1:-1:-1::0;;;;;805:23:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;870:5:0;843:43:::1;::::0;;870:5;;;::::1;9543:34:33::0;;9608:2;9593:18;;9586:43;;;;843::0::1;::::0;9478:18:33;843:43:0::1;9331:304:33::0;463:320:1;675:7;701:75;718:7;727:4;733:3;;738:4;;744:7;;753:8;701:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:73;:75::i;:::-;694:82;463:320;-1:-1:-1;;;;;;;;;;463:320:1:o;27793:991:2:-;27856:4;27872:22;27904:13;27954:17;27966:4;27954:11;:17::i;:::-;27928:43;;-1:-1:-1;27928:43:2;-1:-1:-1;28050:10:2;;;:43;;;-1:-1:-1;;28064:14:2;:29;28050:43;28046:86;;;-1:-1:-1;28116:5:2;;27793:991;-1:-1:-1;;;27793:991:2:o;28046:86::-;28142:15;28160:18;28164:14;28160:1;:18;:::i;:::-;28142:36;;28194:9;28189:492;28213:5;28209:1;:9;28189:492;;;28312:4;:11;28301:7;:22;28297:73;;-1:-1:-1;28350:5:2;;27793:991;-1:-1:-1;;;;;27793:991:2:o;28297:73::-;28445:16;28464:37;28487:4;28493:7;28464:22;:37::i;:::-;28445:56;;-1:-1:-1;;28519:8:2;:23;28515:74;;-1:-1:-1;28569:5:2;;27793:991;-1:-1:-1;;;;;;27793:991:2:o;28515:74::-;28651:19;28662:8;28651:19;;:::i;:::-;;-1:-1:-1;;28220:3:2;;28189:492;;;-1:-1:-1;28766:11:2;;28755:22;;;;;-1:-1:-1;;;27793:991:2:o;29056:1004::-;29121:4;29137:22;29169:14;29221:18;29233:5;29221:11;:18::i;:::-;29194:45;;-1:-1:-1;29194:45:2;-1:-1:-1;29319:11:2;;;:44;;;-1:-1:-1;;29334:14:2;:29;29319:44;29315:87;;;-1:-1:-1;29386:5:2;;29056:1004;-1:-1:-1;;;29056:1004:2:o;29315:87::-;29412:15;29430:18;29434:14;29430:1;:18;:::i;:::-;29412:36;;29464:9;29459:497;29483:6;29479:1;:10;29459:497;;;29583:5;:12;29572:7;:23;29568:74;;-1:-1:-1;29622:5:2;;29056:1004;-1:-1:-1;;;;;29056:1004:2:o;29568:74::-;29766:16;29785:39;29809:5;29816:7;29785:23;:39::i;:::-;29766:58;;-1:-1:-1;;29842:8:2;:23;29838:74;;-1:-1:-1;29892:5:2;;29056:1004;-1:-1:-1;;;;;;29056:1004:2:o;29838:74::-;29926:19;29937:8;29926:19;;:::i;:::-;;-1:-1:-1;;29491:3:2;;29459:497;;2414:123;2475:7;2484;2510:20;2524:2;2528:1;2510:13;:20::i;:::-;2503:27;;;;2414:123;;;:::o;1092:871:1:-;1179:4;1254:6;1264:1;1254:11;1250:54;;-1:-1:-1;1288:5:1;1281:12;;1250:54;1314:15;1349:9;1344:512;1368:6;1364:1;:10;1344:512;;;1468:8;:15;1457:7;:26;1453:77;;1510:5;1503:12;;;;;;1453:77;1605:16;1624:43;1649:8;1659:7;1624:24;:43::i;:::-;1605:62;;-1:-1:-1;;1685:8:1;:32;1681:83;;1744:5;1737:12;;;;;;;1681:83;1826:19;1837:8;1826:19;;:::i;:::-;;-1:-1:-1;;1376:3:1;;1344:512;;;-1:-1:-1;1941:15:1;;1930:26;;-1:-1:-1;1092:871:1;;;;;:::o;3428:579::-;3521:12;3545;3571:15;3606:10;3601:221;3627:6;3622:2;:11;3601:221;;;3663:43;3688:8;3698:7;3663:24;:43::i;:::-;3656:50;;-1:-1:-1;;3728:4:1;:28;3720:62;;;;-1:-1:-1;;;3720:62:1;;19924:2:33;3720:62:1;;;19906:21:33;19963:2;19943:18;;;19936:30;-1:-1:-1;;;19982:18:33;;;19975:51;20043:18;;3720:62:1;19722:345:33;3720:62:1;3796:15;3807:4;3796:15;;:::i;:::-;;-1:-1:-1;3635:5:1;;3601:221;;;;3839:43;3864:8;3874:7;3839:24;:43::i;:::-;3832:50;;-1:-1:-1;;3900:4:1;:28;3892:62;;;;-1:-1:-1;;;3892:62:1;;19924:2:33;3892:62:1;;;19906:21:33;19963:2;19943:18;;;19936:30;-1:-1:-1;;;19982:18:33;;;19975:51;20043:18;;3892:62:1;19722:345:33;3892:62:1;3971:29;:8;3986:7;3995:4;3971:14;:29::i;:::-;3964:36;3428:579;-1:-1:-1;;;;;3428:579:1:o;4368:974::-;4462:12;4486:22;4518:15;4580:30;4601:8;4580:20;:30::i;:::-;4552:58;;-1:-1:-1;4552:58:1;-1:-1:-1;4628:38:1;;;4620:85;;;;-1:-1:-1;;;4620:85:1;;20274:2:33;4620:85:1;;;20256:21:33;20313:2;20293:18;;;20286:30;20352:34;20332:18;;;20325:62;-1:-1:-1;;;20403:18:33;;;20396:32;20445:19;;4620:85:1;20072:398:33;4620:85:1;4732:7;4723:6;:16;4715:45;;;;-1:-1:-1;;;4715:45:1;;20677:2:33;4715:45:1;;;20659:21:33;20716:2;20696:18;;;20689:30;-1:-1:-1;;;20735:18:33;;;20728:46;20791:18;;4715:45:1;20475:340:33;4715:45:1;4771:16;;4819:18;4823:14;4819:1;:18;:::i;:::-;4801:36;;4853:9;4848:263;4872:6;4868:1;:10;4848:263;;;4928:41;4951:8;4961:7;4928:22;:41::i;:::-;4899:70;;-1:-1:-1;4899:70:1;-1:-1:-1;4991:32:1;;;4983:63;;;;-1:-1:-1;;;4983:63:1;;21022:2:33;4983:63:1;;;21004:21:33;21061:2;21041:18;;;21034:30;-1:-1:-1;;;21080:18:33;;;21073:48;21138:18;;4983:63:1;20820:342:33;4983:63:1;5092:8;5071:18;5075:14;5071:1;:18;:::i;:::-;:29;;;;:::i;:::-;5060:40;;;;:::i;:::-;;-1:-1:-1;4880:3:1;;4848:263;;;;5150:41;5173:8;5183:7;5150:22;:41::i;:::-;5121:70;;-1:-1:-1;5121:70:1;-1:-1:-1;5209:32:1;;;5201:63;;;;-1:-1:-1;;;5201:63:1;;21022:2:33;5201:63:1;;;21004:21:33;21061:2;21041:18;;;21034:30;-1:-1:-1;;;21080:18:33;;;21073:48;21138:18;;5201:63:1;20820:342:33;5201:63:1;5281:54;5296:7;5305:25;5316:14;5305:8;:25;:::i;:::-;:29;;5333:1;5305:29;:::i;:::-;5281:8;;:54;:14;:54::i;:::-;5274:61;4368:974;-1:-1:-1;;;;;;;4368:974:1:o;10344:924:3:-;10431:16;10463:7;10474:1;10463:12;10459:55;;-1:-1:-1;10491:12:3;;;;;;;;;-1:-1:-1;10491:12:3;;;;10459:55;10523:9;10535:16;10544:7;10535:6;:16;:::i;:::-;10523:28;;10576:6;10569:4;:13;:38;;;;;10603:4;10586:6;:13;:21;;10569:38;10561:70;;;;-1:-1:-1;;;10561:70:3;;21369:2:33;10561:70:3;;;21351:21:33;21408:2;21388:18;;;21381:30;-1:-1:-1;;;21427:18:33;;;21420:49;21486:18;;10561:70:3;21167:343:33;10561:70:3;10768:4;10762:11;10755:18;;10817:7;10812:2;10807:3;10803:12;10799:26;10793:4;10786:40;10851:7;10846:3;10839:20;10978:6;10970;10966:19;10961:3;10957:29;11054:6;11049:2;11041:6;11037:15;11033:28;11098:7;11093:3;11089:17;11000:252;11129:3;11124;11121:12;11000:252;;;11233:3;11227:10;11220:4;11215:3;11211:14;11204:34;11168:2;11163:3;11159:12;11152:19;;11000:252;;;11004:116;;;10651:611;10344:924;;;;;;:::o;8412:440:30:-;8489:11;8532:1;:8;8520:1;:8;:20;8512:53;;;;-1:-1:-1;;;8512:53:30;;21717:2:33;8512:53:30;;;21699:21:33;21756:2;21736:18;;;21729:30;-1:-1:-1;;;21775:18:33;;;21768:50;21835:18;;8512:53:30;21515:344:33;8512:53:30;8651:8;;8637:11;8669:154;8690:6;8686:1;:10;8669:154;;;8729:1;8731;8729:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8721:12:30;;:1;8723;8721:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;8721:4:30;:12;8717:96;;8762:5;8753:14;;8785:13;;;;8717:96;8698:3;;8669:154;;;-1:-1:-1;8841:4:30;;8412:440;-1:-1:-1;;;;8412:440:30:o;8858:241::-;8936:7;8955:14;8972:13;:20;;;;;:::i;:::-;;-1:-1:-1;9002:13:30;;-1:-1:-1;9026:25:30;:7;8972:20;9048:2;9026:13;:25::i;:::-;9018:34;;;:::i;:::-;9077:14;;;8858:241;-1:-1:-1;;;;8858:241:30:o;9609:335:2:-;9670:11;9835:2;9829:4;9824:2;9818:9;9813:2;9809;9805:11;9802:1;9795:5;9784:54;9780:59;9893:2;9887:4;9883:2;9877:4;9874:1;9867:5;9856:40;-1:-1:-1;;9923:4:2;9917:11;;9609:335;-1:-1:-1;9609:335:2:o;14980:394::-;15069:7;15088:22;15120:21;15185:34;15207:6;15215:3;15185:21;:34::i;:::-;15151:68;;-1:-1:-1;15151:68:2;-1:-1:-1;15233:29:2;;;15229:78;;-1:-1:-1;;15278:18:2;;;;;;15229:78;15350:13;15324:23;15333:14;15324:6;:23;:::i;:::-;:39;;;;:::i;:::-;:43;;15366:1;15324:43;:::i;20911:536::-;21002:7;21042;21046:3;21042:1;:7;:::i;:::-;21025;:14;:24;21021:73;;;-1:-1:-1;;;21065:18:2;;21021:73;21103:22;;21212:31;21226:7;21235;21239:3;21235:1;:7;:::i;:::-;21212:13;:31::i;:::-;21172:71;;-1:-1:-1;21172:71:2;-1:-1:-1;21258:29:2;;;21254:78;;-1:-1:-1;;21303:18:2;;;;;;21254:78;21421:19;21396:22;21404:14;21396:5;:22;:::i;:::-;:44;;;;:::i;2999:704::-;3075:7;3084;3103:14;3120:36;3148:2;3152:3;3120:27;:36::i;:::-;3103:53;;3171:8;:13;;3183:1;3171:13;3167:70;;3208:1;3217:2;3220:3;3217:7;;;;;;;;:::i;:::-;;;;;3200:26;;-1:-1:-1;3217:7:2;;;-1:-1:-1;3200:26:2;;-1:-1:-1;3200:26:2;3167:70;3277:3;3262:12;3266:8;3262:1;:12;:::i;:::-;:18;;;;;;:::i;:::-;3250:2;:9;:30;3246:84;;;-1:-1:-1;;3317:1:2;3296:23;;;;;;;3246:84;3339:15;3368:8;:13;;3380:1;3368:13;3364:297;;3407:41;3428:18;3438:7;3442:3;3438:1;:7;:::i;:::-;3428:2;;:9;:18::i;:::-;7042:7;;;;;;7054;;;;;7041:21;;6959:110;3407:41;3397:51;;;;3364:297;;;3469:8;:13;;3481:1;3469:13;3465:196;;3508:41;3529:18;3539:7;3543:3;3539:1;:7;:::i;3529:18::-;6397:21;;;;;;6402:10;6360:6;;;;;6359:21;;;;6358:61;6485:2;6480:7;;;6468;;;6467:21;;6238:257;3508:41;3498:51;;;;3465:196;;;3570:8;:13;;3582:1;3570:13;3566:95;;3609:41;3630:18;3640:7;3644:3;3640:1;:7;:::i;3630:18::-;3623:26;;5965:22;5866:1;5793:6;;;5965:22;;;;5838:29;;;;5965:22;;;;5992:2;5964:30;;;5838:29;6056:7;5843:18;5792:29;;;;5838;;;;5791:77;;;;5918:7;;;5969:18;5917:30;6056:7;6061:2;6044:7;;;6056;;;6043:21;;5671:400;3609:41;3599:51;;;;3566:95;3670:26;;;;;-1:-1:-1;3688:7:2;-1:-1:-1;2999:704:2;;;;;;:::o;2286:759:1:-;2379:7;2398:22;2430:14;2490:37;2513:8;2523:3;2490:22;:37::i;:::-;2463:64;;-1:-1:-1;2463:64:1;-1:-1:-1;2541:38:1;;;2537:96;;-1:-1:-1;;2595:27:1;;;;;;2537:96;2643:16;;2687:18;2691:14;2687:1;:18;:::i;:::-;2669:36;;2721:9;2716:298;2740:6;2736:1;:10;2716:298;;;2796:41;2819:8;2829:7;2796:22;:41::i;:::-;2767:70;;-1:-1:-1;2767:70:1;-1:-1:-1;2855:32:1;;;2851:98;;-1:-1:-1;;2907:27:1;;;;;;;;;2851:98;2995:8;2974:18;2978:14;2974:1;:18;:::i;:::-;:29;;;;:::i;:::-;2963:40;;;;:::i;:::-;;-1:-1:-1;2748:3:1;;2716:298;;;-1:-1:-1;3031:7:1;2286:759;-1:-1:-1;;;;;;2286:759:1:o;13785:388:2:-;13873:7;;13921:8;13926:3;13921:2;:8;:::i;:::-;13905:6;:13;:24;13901:78;;;-1:-1:-1;;;654:66:2;-1:-1:-1;13966:1:2;13945:23;;13901:78;13989:22;;14086:31;14100:6;14108:8;:3;14114:2;14108:8;:::i;14086:31::-;14052:65;;;;-1:-1:-1;13785:388:2;-1:-1:-1;;;;;13785:388:2:o;1550:446::-;1640:5;1667:2;1670:3;1667:7;;;;;;;;:::i;:::-;;;;;;;1661:14;:22;1657:93;;-1:-1:-1;1706:1:2;1699:8;;1657:93;1769:2;1772:3;1769:7;;;;;;;;:::i;:::-;;;;;;;1781:4;1763:22;1759:93;;-1:-1:-1;1808:1:2;1801:8;;1759:93;1871:2;1874:3;1871:7;;;;;;;;:::i;:::-;;;;;;;1883:4;1865:22;1861:93;;-1:-1:-1;1910:1:2;1903:8;;1861:93;-1:-1:-1;1971:1:2;1550:446;;;;:::o;13493:136:3:-;13566:6;13598:23;13606:6;13614;12550:28;12566:2;12550:28;12544:35;;12417:178;388:347:33;439:8;449:6;503:3;496:4;488:6;484:17;480:27;470:55;;521:1;518;511:12;470:55;-1:-1:-1;544:20:33;;587:18;576:30;;573:50;;;619:1;616;609:12;573:50;656:4;648:6;644:17;632:29;;708:3;701:4;692:6;684;680:19;676:30;673:39;670:59;;;725:1;722;715:12;740:173;808:20;;-1:-1:-1;;;;;857:31:33;;847:42;;837:70;;903:1;900;893:12;837:70;740:173;;;:::o;918:860::-;1026:6;1034;1042;1050;1058;1066;1119:3;1107:9;1098:7;1094:23;1090:33;1087:53;;;1136:1;1133;1126:12;1087:53;1176:9;1163:23;1205:18;1246:2;1238:6;1235:14;1232:34;;;1262:1;1259;1252:12;1232:34;1301:58;1351:7;1342:6;1331:9;1327:22;1301:58;:::i;:::-;1378:8;;-1:-1:-1;1275:84:33;-1:-1:-1;1466:2:33;1451:18;;1438:32;;-1:-1:-1;1482:16:33;;;1479:36;;;1511:1;1508;1501:12;1479:36;;1550:60;1602:7;1591:8;1580:9;1576:24;1550:60;:::i;:::-;1629:8;;-1:-1:-1;1524:86:33;-1:-1:-1;;1711:2:33;1696:18;;1683:32;;-1:-1:-1;1734:38:33;1768:2;1753:18;;1734:38;:::i;:::-;1724:48;;918:860;;;;;;;;:::o;1991:615::-;2077:6;2085;2138:2;2126:9;2117:7;2113:23;2109:32;2106:52;;;2154:1;2151;2144:12;2106:52;2194:9;2181:23;2223:18;2264:2;2256:6;2253:14;2250:34;;;2280:1;2277;2270:12;2250:34;2318:6;2307:9;2303:22;2293:32;;2363:7;2356:4;2352:2;2348:13;2344:27;2334:55;;2385:1;2382;2375:12;2334:55;2425:2;2412:16;2451:2;2443:6;2440:14;2437:34;;;2467:1;2464;2457:12;2437:34;2520:7;2515:2;2505:6;2502:1;2498:14;2494:2;2490:23;2486:32;2483:45;2480:65;;;2541:1;2538;2531:12;2480:65;2572:2;2564:11;;;;;2594:6;;-1:-1:-1;1991:615:33;;-1:-1:-1;;;;1991:615:33:o;2611:180::-;2670:6;2723:2;2711:9;2702:7;2698:23;2694:32;2691:52;;;2739:1;2736;2729:12;2691:52;-1:-1:-1;2762:23:33;;2611:180;-1:-1:-1;2611:180:33:o;2796:546::-;2906:4;2935:2;2964;2953:9;2946:21;2996:6;2990:13;3039:6;3034:2;3023:9;3019:18;3012:34;3064:1;3074:140;3088:6;3085:1;3082:13;3074:140;;;3183:14;;;3179:23;;3173:30;3149:17;;;3168:2;3145:26;3138:66;3103:10;;3074:140;;;3078:3;3263:1;3258:2;3249:6;3238:9;3234:22;3230:31;3223:42;3333:2;3326;3322:7;3317:2;3309:6;3305:15;3301:29;3290:9;3286:45;3282:54;3274:62;;;;2796:546;;;;:::o;3347:785::-;3446:6;3454;3462;3470;3478;3531:2;3519:9;3510:7;3506:23;3502:32;3499:52;;;3547:1;3544;3537:12;3499:52;3587:9;3574:23;3616:18;3657:2;3649:6;3646:14;3643:34;;;3673:1;3670;3663:12;3643:34;3712:58;3762:7;3753:6;3742:9;3738:22;3712:58;:::i;:::-;3789:8;;-1:-1:-1;3686:84:33;-1:-1:-1;3877:2:33;3862:18;;3849:32;;-1:-1:-1;3893:16:33;;;3890:36;;;3922:1;3919;3912:12;3890:36;;3961:60;4013:7;4002:8;3991:9;3987:24;3961:60;:::i;:::-;3347:785;;;;-1:-1:-1;4040:8:33;4122:2;4107:18;4094:32;;3347:785;-1:-1:-1;;;;3347:785:33:o;4137:186::-;4196:6;4249:2;4237:9;4228:7;4224:23;4220:32;4217:52;;;4265:1;4262;4255:12;4217:52;4288:29;4307:9;4288:29;:::i;4695:394::-;4788:6;4841:2;4829:9;4820:7;4816:23;4812:32;4809:52;;;4857:1;4854;4847:12;4809:52;4897:9;4884:23;4930:18;4922:6;4919:30;4916:50;;;4962:1;4959;4952:12;4916:50;4985:22;;5041:3;5023:16;;;5019:26;5016:46;;;5058:1;5055;5048:12;6764:127;6825:10;6820:3;6816:20;6813:1;6806:31;6856:4;6853:1;6846:15;6880:4;6877:1;6870:15;6896:380;6975:1;6971:12;;;;7018;;;7039:61;;7093:4;7085:6;7081:17;7071:27;;7039:61;7146:2;7138:6;7135:14;7115:18;7112:38;7109:161;;7192:10;7187:3;7183:20;7180:1;7173:31;7227:4;7224:1;7217:15;7255:4;7252:1;7245:15;7109:161;;6896:380;;;:::o;7406:542::-;7507:2;7502:3;7499:11;7496:446;;;7543:1;7567:5;7564:1;7557:16;7611:4;7608:1;7598:18;7681:2;7669:10;7665:19;7662:1;7658:27;7652:4;7648:38;7717:4;7705:10;7702:20;7699:47;;;-1:-1:-1;7740:4:33;7699:47;7795:2;7790:3;7786:12;7783:1;7779:20;7773:4;7769:31;7759:41;;7850:82;7868:2;7861:5;7858:13;7850:82;;;7913:17;;;7894:1;7883:13;7850:82;;;7854:3;;;7496:446;7406:542;;;:::o;8124:1202::-;8246:18;8241:3;8238:27;8235:53;;;8268:18;;:::i;:::-;8297:93;8386:3;8346:38;8378:4;8372:11;8346:38;:::i;:::-;8340:4;8297:93;:::i;:::-;8416:1;8441:2;8436:3;8433:11;8458:1;8453:615;;;;9112:1;9129:3;9126:93;;;-1:-1:-1;9185:19:33;;;9172:33;9126:93;-1:-1:-1;;8081:1:33;8077:11;;;8073:24;8069:29;8059:40;8105:1;8101:11;;;8056:57;9232:78;;8426:894;;8453:615;7353:1;7346:14;;;7390:4;7377:18;;-1:-1:-1;;8489:17:33;;;8589:9;8611:229;8625:7;8622:1;8619:14;8611:229;;;8714:19;;;8701:33;8686:49;;8821:4;8806:20;;;;8774:1;8762:14;;;;8641:12;8611:229;;;8615:3;8868;8859:7;8856:16;8853:159;;;8992:1;8988:6;8982:3;8976;8973:1;8969:11;8965:21;8961:34;8957:39;8944:9;8939:3;8935:19;8922:33;8918:79;8910:6;8903:95;8853:159;;;9055:1;9049:3;9046:1;9042:11;9038:19;9032:4;9025:33;8426:894;;;8124:1202;;;:::o;9640:266::-;9728:6;9723:3;9716:19;9780:6;9773:5;9766:4;9761:3;9757:14;9744:43;-1:-1:-1;9832:1:33;9807:16;;;9825:4;9803:27;;;9796:38;;;;9888:2;9867:15;;;-1:-1:-1;;9863:29:33;9854:39;;;9850:50;;9640:266::o;9911:502::-;10152:2;10141:9;10134:21;10115:4;10178:61;10235:2;10224:9;10220:18;10212:6;10204;10178:61;:::i;:::-;10287:9;10279:6;10275:22;10270:2;10259:9;10255:18;10248:50;10315:49;10357:6;10349;10341;10315:49;:::i;:::-;10307:57;;;10400:6;10395:2;10384:9;10380:18;10373:34;9911:502;;;;;;;;:::o;10418:127::-;10479:10;10474:3;10470:20;10467:1;10460:31;10510:4;10507:1;10500:15;10534:4;10531:1;10524:15;10550:168;10623:9;;;10654;;10671:15;;;10665:22;;10651:37;10641:71;;10692:18;;:::i;11075:127::-;11136:10;11131:3;11127:20;11124:1;11117:31;11167:4;11164:1;11157:15;11191:4;11188:1;11181:15;11207:125;11272:9;;;11293:10;;;11290:36;;;11306:18;;:::i;11661:343::-;11863:2;11845:21;;;11902:2;11882:18;;;11875:30;-1:-1:-1;;;11936:2:33;11921:18;;11914:49;11995:2;11980:18;;11661:343::o;12720:286::-;12778:6;12831:2;12819:9;12810:7;12806:23;12802:32;12799:52;;;12847:1;12844;12837:12;12799:52;12873:23;;-1:-1:-1;;;;;;12925:32:33;;12915:43;;12905:71;;12972:1;12969;12962:12;13011:281;13069:6;13122:2;13110:9;13101:7;13097:23;13093:32;13090:52;;;13138:1;13135;13128:12;13090:52;13164:23;;-1:-1:-1;;;;;;13216:27:33;;13206:38;;13196:66;;13258:1;13255;13248:12;13297:521;13374:4;13380:6;13440:11;13427:25;13534:2;13530:7;13519:8;13503:14;13499:29;13495:43;13475:18;13471:68;13461:96;;13553:1;13550;13543:12;13461:96;13580:33;;13632:20;;;-1:-1:-1;13675:18:33;13664:30;;13661:50;;;13707:1;13704;13697:12;13661:50;13740:4;13728:17;;-1:-1:-1;13771:14:33;13767:27;;;13757:38;;13754:58;;;13808:1;13805;13798:12;15641:459;15882:6;15871:9;15864:25;15925:6;15920:2;15909:9;15905:18;15898:34;15968:3;15963:2;15952:9;15948:18;15941:31;15845:4;15989:62;16046:3;16035:9;16031:19;16023:6;16015;15989:62;:::i;:::-;15981:70;;16087:6;16082:2;16071:9;16067:18;16060:34;15641:459;;;;;;;;:::o;16105:277::-;16172:6;16225:2;16213:9;16204:7;16200:23;16196:32;16193:52;;;16241:1;16238;16231:12;16193:52;16273:9;16267:16;16326:5;16319:13;16312:21;16305:5;16302:32;16292:60;;16348:1;16345;16338:12;17444:128;17511:9;;;17532:11;;;17529:37;;;17546:18;;:::i;18831:886::-;-1:-1:-1;;;;;;19229:15:33;;;19217:28;;-1:-1:-1;;;;;;19274:28:33;;19270:1;19261:11;;19254:49;19160:3;;19346:6;19338;19334:1;19325:11;;19312:41;19381:6;19376:3;19372:16;19415:1;19411:2;19407:10;19437:1;19433:2;19426:13;19473:6;19465;19461:2;19448:32;;19507:6;19503:2;19499:15;19489:25;;19541:1;19537:2;19533:10;19563:1;19559:2;19552:13;19599:6;19591;19587:2;19574:32;-1:-1:-1;19668:15:33;;19625;;;;19664:1;19656:10;;19649:35;;;;-1:-1:-1;;19708:2:33;19700:11;;;-1:-1:-1;;;;;;;18831:886:33:o;21864:375::-;21982:12;;22030:4;22019:16;;22013:23;-1:-1:-1;;22104:11:33;;;;21982:12;22013:23;22138:2;22127:14;;22124:109;;;22220:2;22214;22204:6;22200:2;22196:15;22193:1;22189:23;22185:32;22181:2;22177:41;22173:50;22164:59;;22124:109;;;;21864:375;;;:::o;22244:148::-;22332:4;22311:12;;;22325;;;22307:31;;22350:13;;22347:39;;;22366:18;;:::i","linkReferences":{}},"methodIdentifiers":{"DEPOSIT_AMOUNT()":"ec6925a7","LIGHT_CLIENT()":"e613ae00","SYSTEM_CALLER()":"d761753e","acceptOwnership()":"79ba5097","batchWithdraw(bytes32[])":"59c19cee","deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"dd95c7c6","depositScript()":"b93780f6","getWithdrawalCount()":"781952a8","initialize(bytes,bytes,uint256,address)":"4507fc69","initialized()":"158ef93e","operator()":"570ca735","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","requiredSigsCount()":"43e31687","scriptSuffix()":"87f8bf56","setDepositScript(bytes,bytes,uint256)":"9f963f59","setOperator(address)":"b3ab15fb","spentWtxIds(bytes32)":"5e0e5b3e","transferOwnership(address)":"f2fde38b","withdraw(bytes32)":"8e19899e","withdrawalAddrs(uint256)":"d1c44456"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wtxId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositScript\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptSuffix\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"DepositScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOperator\",\"type\":\"address\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT\",\"outputs\":[{\"internalType\":\"contract BitcoinLightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"bitcoin_addresses\",\"type\":\"bytes32[]\"}],\"name\":\"batchWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.DepositParams\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredSigsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptSuffix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"setDepositScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"spentWtxIds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawalAddrs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"kind\":\"dev\",\"methods\":{\"batchWithdraw(bytes32[])\":{\"details\":\"Takes in multiple Bitcoin addresses as recipient addresses should be unique\",\"params\":{\"bitcoin_addresses\":\"The Bitcoin addresses of the receivers\"}},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"p\":\"The deposit parameters that contains the info of the deposit transaction on Bitcoin\"}},\"getWithdrawalCount()\":{\"returns\":{\"_0\":\"The count of withdrawals happened so far\"}},\"initialize(bytes,bytes,uint256,address)\":{\"params\":{\"_depositScript\":\"The deposit script expected in the witness field for all L1 deposits\",\"_requiredSigsCount\":\"The number of signatures that is contained in the deposit script\",\"_scriptSuffix\":\"The suffix of the deposit script that follows the receiver address\"}},\"setDepositScript(bytes,bytes,uint256)\":{\"details\":\"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver\",\"params\":{\"_depositScript\":\"The new deposit script\",\"_requiredSigsCount\":\"The number of signatures that are needed for deposit transaction\",\"_scriptSuffix\":\"The part of the deposit script that succeeds the receiver address\"}},\"setOperator(address)\":{\"params\":{\"_operator\":\"Address of the privileged operator\"}},\"withdraw(bytes32)\":{\"params\":{\"bitcoin_address\":\"The Bitcoin address of the receiver\"}}},\"title\":\"Bridge contract of Clementine\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batchWithdraw(bytes32[])\":{\"notice\":\"Batch version of `withdraw` that can accept multiple cBTC\"},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver\"},\"initialize(bytes,bytes,uint256,address)\":{\"notice\":\"Initializes the bridge contract and sets the deposit script\"},\"setDepositScript(bytes,bytes,uint256)\":{\"notice\":\"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness\"},\"setOperator(address)\":{\"notice\":\"Sets the operator address that can process user deposits\"},\"withdraw(bytes32)\":{\"notice\":\"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":bitcoin-spv/=lib/bitcoin-spv/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/Ownable.sol\":{\"keccak256\":\"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee\",\"dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94\"]},\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf\",\"dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x9da3ff5d2dfd6debcef91c7c53974c6f5a3c00115db7a02b3af327e1a1803bbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa807df3f7cb25c0af7256fedeb5b5559d462efe8b182e8ed7371ecee2e64fd0\",\"dweb:/ipfs/QmUP9rmmEvT2wrcfp1qj7L6kHWTu8uWTysQiSyjyAsaj72\"]},\"src/Bridge.sol\":{\"keccak256\":\"0xa6ebf14954616ee14e2cb8bdc22ccb7c1fd25e949334a4fc7fcf21b3edf4cb94\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25ee56bb6481cd86166fd7e7f27e215e05141fe99776b8e623c69dc910b4e153\",\"dweb:/ipfs/QmXWtzyx9AFiU85cKGBLpXgNW7QWg3oY5cN1ak8K8kzyhD\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"wtxId","type":"bytes32","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"bytes","name":"depositScript","type":"bytes","indexed":false},{"internalType":"bytes","name":"scriptSuffix","type":"bytes","indexed":false},{"internalType":"uint256","name":"requiredSigsCount","type":"uint256","indexed":false}],"type":"event","name":"DepositScriptUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOperator","type":"address","indexed":false},{"internalType":"address","name":"newOperator","type":"address","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false}],"type":"event","name":"OwnershipTransferRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Withdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIGHT_CLIENT","outputs":[{"internalType":"contract BitcoinLightClient","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"bytes32[]","name":"bitcoin_addresses","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"batchWithdraw"},{"inputs":[{"internalType":"struct Bridge.DepositParams","name":"p","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"depositScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWithdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"requiredSigsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptSuffix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositScript"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"spentWtxIds","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalAddrs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"batchWithdraw(bytes32[])":{"details":"Takes in multiple Bitcoin addresses as recipient addresses should be unique","params":{"bitcoin_addresses":"The Bitcoin addresses of the receivers"}},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"p":"The deposit parameters that contains the info of the deposit transaction on Bitcoin"}},"getWithdrawalCount()":{"returns":{"_0":"The count of withdrawals happened so far"}},"initialize(bytes,bytes,uint256,address)":{"params":{"_depositScript":"The deposit script expected in the witness field for all L1 deposits","_requiredSigsCount":"The number of signatures that is contained in the deposit script","_scriptSuffix":"The suffix of the deposit script that follows the receiver address"}},"setDepositScript(bytes,bytes,uint256)":{"details":"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver","params":{"_depositScript":"The new deposit script","_requiredSigsCount":"The number of signatures that are needed for deposit transaction","_scriptSuffix":"The part of the deposit script that succeeds the receiver address"}},"setOperator(address)":{"params":{"_operator":"Address of the privileged operator"}},"withdraw(bytes32)":{"params":{"bitcoin_address":"The Bitcoin address of the receiver"}}},"version":1},"userdoc":{"kind":"user","methods":{"batchWithdraw(bytes32[])":{"notice":"Batch version of `withdraw` that can accept multiple cBTC"},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver"},"initialize(bytes,bytes,uint256,address)":{"notice":"Initializes the bridge contract and sets the deposit script"},"setDepositScript(bytes,bytes,uint256)":{"notice":"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness"},"setOperator(address)":{"notice":"Sets the operator address that can process user deposits"},"withdraw(bytes32)":{"notice":"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator "}},"version":1}},"settings":{"remappings":["bitcoin-spv/=lib/bitcoin-spv/","forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/Ownable.sol":{"keccak256":"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07","urls":["bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee","dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94"],"license":"MIT"},"lib/WitnessUtils.sol":{"keccak256":"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a","urls":["bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf","dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K"],"license":"LGPL-3.0-or-later"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"src/BitcoinLightClient.sol":{"keccak256":"0x9da3ff5d2dfd6debcef91c7c53974c6f5a3c00115db7a02b3af327e1a1803bbd","urls":["bzz-raw://fa807df3f7cb25c0af7256fedeb5b5559d462efe8b182e8ed7371ecee2e64fd0","dweb:/ipfs/QmUP9rmmEvT2wrcfp1qj7L6kHWTu8uWTysQiSyjyAsaj72"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0xa6ebf14954616ee14e2cb8bdc22ccb7c1fd25e949334a4fc7fcf21b3edf4cb94","urls":["bzz-raw://25ee56bb6481cd86166fd7e7f27e215e05141fe99776b8e623c69dc910b4e153","dweb:/ipfs/QmXWtzyx9AFiU85cKGBLpXgNW7QWg3oY5cN1ak8K8kzyhD"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file +{"abi":[{"type":"function","name":"DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"LIGHT_CLIENT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract BitcoinLightClient"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchWithdraw","inputs":[{"name":"bitcoin_addresses","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposit","inputs":[{"name":"p","type":"tuple","internalType":"struct Bridge.DepositParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositScript","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"},{"name":"_owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requiredSigsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"scriptSuffix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setDepositScript","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"spentWtxIds","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"bitcoin_address","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawalAddrs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Deposit","inputs":[{"name":"wtxId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DepositScriptUpdate","inputs":[{"name":"depositScript","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"scriptSuffix","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"requiredSigsCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"oldOperator","type":"address","indexed":false,"internalType":"address"},{"name":"newOperator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferRequested","inputs":[{"name":"previousOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"name":"bitcoin_address","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50600080546001600160a01b0319163317905561252d806100316000396000f3fe6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212207d45d2ca9fa8bc6e53c5359bdfdaaf6aeb4be2e368e8d1823a2078308fbb43b964736f6c63430008190033","sourceMap":"336:8765:42:-:0;;;;;;;;;;;;-1:-1:-1;561:5:0;:18;;-1:-1:-1;;;;;;561:18:0;569:10;561:18;;;336:8765:42;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212207d45d2ca9fa8bc6e53c5359bdfdaaf6aeb4be2e368e8d1823a2078308fbb43b964736f6c63430008190033","sourceMap":"336:8765:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;908:23;;;;;;;;;;-1:-1:-1;908:23:42;;;;-1:-1:-1;;;908:23:42;;;;;;;;;179:14:46;;172:22;154:41;;142:2;127:18;908:23:42;;;;;;;;1023:32;;;;;;;;;;;;;;;;;;;352:25:46;;;340:2;325:18;1023:32:42;206:177:46;2159:850:42;;;;;;;;;;-1:-1:-1;2159:850:42;;;;;:::i;:::-;;:::i;:::-;;994:23;;;;;;;;;;-1:-1:-1;994:23:42;;;;-1:-1:-1;;;;;994:23:42;;;;;;-1:-1:-1;;;;;1947:32:46;;;1929:51;;1917:2;1902:18;994:23:42;1783:203:46;7220:440:42;;;;;;:::i;:::-;;:::i;1129:43::-;;;;;;;;;;-1:-1:-1;1129:43:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;592:135:0;;;;;;;;;;;;;:::i;7723:108:42:-;;;;;;;;;;-1:-1:-1;7802:15:42;:22;7723:108;;899:218:0;;;;;;;;;;;;;:::i;1093:25:42:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;90:20:0:-;;;;;;;;;;-1:-1:-1;90:20:0;;;;-1:-1:-1;;;;;90:20:0;;;6674:301:42;;;;;;:::i;:::-;;:::i;3502:505::-;;;;;;;;;;-1:-1:-1;3502:505:42;;;;;:::i;:::-;;:::i;7974:147::-;;;;;;;;;;-1:-1:-1;7974:147:42;;;;;:::i;:::-;;:::i;1061:26::-;;;;;;;;;;;;;:::i;1178:32::-;;;;;;;;;;-1:-1:-1;1178:32:42;;;;;:::i;:::-;;:::i;810:91::-;;;;;;;;;;;;858:42;810:91;;4235:2185;;;;;;;;;;-1:-1:-1;4235:2185:42;;;;;:::i;:::-;;:::i;116:27:0:-;;;;;;;;;;-1:-1:-1;116:27:0;;;;-1:-1:-1;;;;;116:27:0;;;683:121:42;;;;;;;;;;;;-1:-1:-1;;;;;683:121:42;;937:51;;;;;;;;;;;;978:10;937:51;;733:160:0;;;;;;;;;;-1:-1:-1;733:160:0;;;;;:::i;:::-;;:::i;2159:850:42:-;1583:10;858:42;1583:27;1575:71;;;;-1:-1:-1;;;1575:71:42;;5532:2:46;1575:71:42;;;5514:21:46;5571:2;5551:18;;;5544:30;5610:33;5590:18;;;5583:61;5661:18;;1575:71:42;;;;;;;;;2323:11:::1;::::0;-1:-1:-1;;;2323:11:42;::::1;;;2322:12;2314:56;;;::::0;-1:-1:-1;;;2314:56:42;;5892:2:46;2314:56:42::1;::::0;::::1;5874:21:46::0;5931:2;5911:18;;;5904:30;5970:33;5950:18;;;5943:61;6021:18;;2314:56:42::1;5690:355:46::0;2314:56:42::1;2388:18;2410:1;2388:23:::0;2380:62:::1;;;::::0;-1:-1:-1;;;2380:62:42;;6252:2:46;2380:62:42::1;::::0;::::1;6234:21:46::0;6291:2;6271:18;;;6264:30;6330:28;6310:18;;;6303:56;6376:18;;2380:62:42::1;6050:350:46::0;2380:62:42::1;2485:1;2460:26:::0;;;2452:69:::1;;;::::0;-1:-1:-1;;;2452:69:42;;6607:2:46;2452:69:42::1;::::0;::::1;6589:21:46::0;6646:2;6626:18;;;6619:30;6685:32;6665:18;;;6658:60;6735:18;;2452:69:42::1;6405:354:46::0;2452:69:42::1;2546:4;2532:18:::0;;-1:-1:-1;;;;2532:18:42::1;-1:-1:-1::0;;;2532:18:42::1;::::0;;2560:13:::1;:30;2576:14:::0;;2560:13;:30:::1;:::i;:::-;-1:-1:-1::0;2600:12:42::1;:28;2615:13:::0;;2600:12;:28:::1;:::i;:::-;-1:-1:-1::0;2638:17:42::1;:38:::0;;;2811:8:::1;:24:::0;;858:42:::1;-1:-1:-1::0;;;;;;2811:24:42;;::::1;::::0;::::1;::::0;;;-1:-1:-1;2845:14:42;;;;::::1;-1:-1:-1::0;;;;;2845:14:42;::::1;;::::0;;2875:42:::1;::::0;;9543:34:46;;;9608:2;9593:18;;9586:43;;;;2875:42:42::1;::::0;9478:18:46;2875:42:42::1;;;;;;;2932:70;2952:14;;2968:13;;2983:18;2932:70;;;;;;;;;;:::i;:::-;;;;;;;;2159:850:::0;;;;;;:::o;7220:440::-;7329:41;7346:17;978:10;7329:41;:::i;:::-;7316:9;:54;7308:90;;;;-1:-1:-1;;;7308:90:42;;10925:2:46;7308:90:42;;;10907:21:46;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:46;;;10976:53;11046:18;;7308:90:42;10723:347:46;7308:90:42;7424:15;:22;7408:13;7456:198;7473:28;;;7456:198;;;7522:15;7543:17;;7561:1;7543:20;;;;;;;:::i;:::-;7522:42;;;;;;;-1:-1:-1;7522:42:42;;;7543:20;7522:42;;;;7543:20;;;;;;;;;7522:42;;;;;-1:-1:-1;7583:60:42;7594:17;;7612:1;7594:20;;;;;;;:::i;:::-;;;;;;;7624:1;7616:5;:9;;;;:::i;:::-;7583:60;;;11539:25:46;;;11595:2;11580:18;;11573:34;;;;7627:15:42;11623:18:46;;;11616:34;11527:2;11512:18;7583:60:42;;;;;;;7503:3;;7456:198;;;;7298:362;7220:440;;:::o;592:135:0:-;356:5;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;664:1:::1;648:18:::0;;-1:-1:-1;;;;;;648:18:0::1;::::0;;681:39:::1;::::0;;9543:34:46;;;9608:2;9593:18;;9586:43;;;;681:39:0::1;::::0;9478:18:46;681:39:0::1;;;;;;;592:135::o:0;899:218::-;469:12;;-1:-1:-1;;;;;469:12:0;455:10;:26;447:66;;;;-1:-1:-1;;;447:66:0;;12211:2:46;447:66:0;;;12193:21:46;12250:2;12230:18;;;12223:30;12289:29;12269:18;;;12262:57;12336:18;;447:66:0;12009:351:46;447:66:0;960:17:::1;980:5:::0;;;1003:12;;-1:-1:-1;;;;;;995:20:0;;::::1;-1:-1:-1::0;;;;;1003:12:0;;::::1;995:20:::0;;;::::1;::::0;;1025:25;::::1;::::0;;;1065:45:::1;::::0;;980:5;;;::::1;9543:34:46::0;;;9608:2;9593:18;;9586:43;;;;1065:45:0::1;::::0;9478:18:46;1065:45:0::1;;;;;;;;950:167;899:218::o:0;1093:25:42:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6674:301::-;978:10;6752:9;:27;6744:63;;;;-1:-1:-1;;;6744:63:42;;10925:2:46;6744:63:42;;;10907:21:46;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:46;;;10976:53;11046:18;;6744:63:42;10723:347:46;6744:63:42;6833:15;:22;;6865:37;;;;;-1:-1:-1;6865:37:42;;;;;;;;;;6917:51;;;11539:25:46;;;11595:2;11580:18;;11573:34;;;6952:15:42;11623:18:46;;;11616:34;6917:51:42;;;;;;;11527:2:46;6917:51:42;;;6734:241;6674:301;:::o;3502:505::-;356:5:0;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;3654:18:42::1;3676:1;3654:23:::0;3646:62:::1;;;::::0;-1:-1:-1;;;3646:62:42;;6252:2:46;3646:62:42::1;::::0;::::1;6234:21:46::0;6291:2;6271:18;;;6264:30;6330:28;6310:18;;;6303:56;6376:18;;3646:62:42::1;6050:350:46::0;3646:62:42::1;3751:1;3726:26:::0;;;3718:69:::1;;;::::0;-1:-1:-1;;;3718:69:42;;6607:2:46;3718:69:42::1;::::0;::::1;6589:21:46::0;6646:2;6626:18;;;6619:30;6685:32;6665:18;;;6658:60;6735:18;;3718:69:42::1;6405:354:46::0;3718:69:42::1;3798:13;:30;3814:14:::0;;3798:13;:30:::1;:::i;:::-;-1:-1:-1::0;3838:12:42::1;:28;3853:13:::0;;3838:12;:28:::1;:::i;:::-;-1:-1:-1::0;3876:17:42::1;:38:::0;;;3930:70:::1;::::0;::::1;::::0;::::1;::::0;3950:14;;;;3966:13;;;;3896:18;;3930:70:::1;:::i;:::-;;;;;;;;3502:505:::0;;;;;:::o;7974:147::-;356:5:0;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;8043:8:42::1;:20:::0;;-1:-1:-1;;;;;;8043:20:42::1;-1:-1:-1::0;;;;;8043:20:42;::::1;::::0;;::::1;::::0;;;8078:36:::1;::::0;;9543:34:46;;;9608:2;9593:18;;9586:43;;;;8078:36:42::1;::::0;9478:18:46;8078:36:42::1;9331:304:46::0;1061:26:42;;;;;;;:::i;1178:32::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1178:32:42;:::o;4235:2185::-;1726:8;;-1:-1:-1;;;;;1726:8:42;1712:10;:22;1704:61;;;;-1:-1:-1;;;1704:61:42;;12567:2:46;1704:61:42;;;12549:21:46;12606:2;12586:18;;;12579:30;12645:28;12625:18;;;12618:56;12691:18;;1704:61:42;12365:350:46;1704:61:42;4661:13:::1;4677:84;4705:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4716:6;::::0;;;::::1;::::0;::::1;;:::i;:::-;4724:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;4731:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4739:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4750:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4677:27;:84::i;:::-;4780:18;::::0;;;:11:::1;:18;::::0;;;;;4661:100;;-1:-1:-1;4780:18:42::1;;4779:19;4771:51;;;::::0;-1:-1:-1;;;4771:51:42;;14025:2:46;4771:51:42::1;::::0;::::1;14007:21:46::0;14064:2;14044:18;;;14037:30;-1:-1:-1;;;14083:18:46;;;14076:49;14142:18;;4771:51:42::1;13823:343:46::0;4771:51:42::1;4832:18;::::0;;;:11:::1;:18;::::0;;;;;;:25;;-1:-1:-1;;4832:25:42::1;4853:4;4832:25;::::0;;4876:27:::1;::::0;4897:5:::1;::::0;;::::1;:1:::0;:5:::1;:::i;:::-;4876:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4876:20:42::1;::::0;-1:-1:-1;;;4876:27:42:i:1;:::-;4868:69;;;::::0;-1:-1:-1;;;4868:69:42;;14373:2:46;4868:69:42::1;::::0;::::1;14355:21:46::0;14412:2;14392:18;;;14385:30;14451:31;14431:18;;;14424:59;14500:18;;4868:69:42::1;14171:353:46::0;4868:69:42::1;4955:29;4977:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4955:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4955:21:42::1;::::0;-1:-1:-1;;;4955:29:42:i:1;:::-;4947:72;;;::::0;-1:-1:-1;;;4947:72:42;;14731:2:46;4947:72:42::1;::::0;::::1;14713:21:46::0;14770:2;14750:18;;;14743:30;14809:32;14789:18;;;14782:60;14859:18;;4947:72:42::1;14529:354:46::0;4947:72:42::1;5041:13;5058:27;5079:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;5058:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5058:20:42::1;::::0;-1:-1:-1;;;5058:27:42:i:1;:::-;5038:47;;;5103:5;5112:1;5103:10;5095:45;;;::::0;-1:-1:-1;;;5095:45:42;;15090:2:46;5095:45:42::1;::::0;::::1;15072:21:46::0;15129:2;15109:18;;;15102:30;-1:-1:-1;;;15148:18:46;;;15141:52;15210:18;;5095:45:42::1;14888:346:46::0;5095:45:42::1;5209:46;5238:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5209:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5249:5:42;;-1:-1:-1;5209:28:42::1;::::0;-1:-1:-1;;5209:46:42:i:1;:::-;5201:92;;;::::0;-1:-1:-1;;;5201:92:42;;15441:2:46;5201:92:42::1;::::0;::::1;15423:21:46::0;15480:2;15460:18;;;15453:30;15519:34;15499:18;;;15492:62;-1:-1:-1;;;15570:18:46;;;15563:31;15611:19;;5201:92:42::1;15239:397:46::0;5201:92:42::1;-1:-1:-1::0;;;;;5312:28:42::1;5341:14;::::0;::::1;;5357:5:::0;5364:20:::1;;::::0;::::1;5341:1:::0;5364:20:::1;:::i;:::-;5386:1;:7;;;5312:82;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5304:122;;;::::0;-1:-1:-1;;;5304:122:42;;16589:2:46;5304:122:42::1;::::0;::::1;16571:21:46::0;16628:2;16608:18;;;16601:30;16667:29;16647:18;;;16640:57;16714:18;;5304:122:42::1;16387:351:46::0;5304:122:42::1;5437:21;5461:48;5496:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5461:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5461:48:42;-1:-1:-1;5461:34:42::1;::::0;-1:-1:-1;;5461:48:42:i:1;:::-;5437:72;;5522:15;5541:30;5562:8;5541:20;:30::i;:::-;5519:52;;;5600:17;;5620:1;5600:21;;;;:::i;:::-;5589:7;:32;5581:66;;;::::0;-1:-1:-1;;;5581:66:42;;16945:2:46;5581:66:42::1;::::0;::::1;16927:21:46::0;16984:2;16964:18;;;16957:30;-1:-1:-1;;;17003:18:46;;;16996:51;17064:18;;5581:66:42::1;16743:345:46::0;5581:66:42::1;5709:19;5731:64;5767:8;5777:17;;5731:35;:64::i;:::-;5709:86;;5805:12;5820:13;:20;;;;;:::i;:::-;::::0;-1:-1:-1;5850:27:42::1;::::0;-1:-1:-1;5880:21:42::1;:6:::0;5850:27;5820:20;5880:12:::1;:21::i;:::-;5850:51;;5919:43;5932:14;5948:13;5919:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:43::i;:::-;5911:78;;;::::0;-1:-1:-1;;;5911:78:42;;17295:2:46;5911:78:42::1;::::0;::::1;17277:21:46::0;17334:2;17314:18;;;17307:30;-1:-1:-1;;;17353:18:46;;;17346:52;17415:18;;5911:78:42::1;17093:346:46::0;5911:78:42::1;5999:20;6022:52;6035:9;:4:::0;6042:2:::1;6035:9;:::i;:::-;6063;:4:::0;6070:2:::1;6063:9;:::i;:::-;6046:6;:13;:27;;;;:::i;:::-;6022:6:::0;;:52;:12:::1;:52::i;:::-;5999:75;;6116:35;6129:7;6138:12;6116:35;;;;;:::i;:::-;6108:69;;;::::0;-1:-1:-1;;;6108:69:42;;17779:2:46;6108:69:42::1;::::0;::::1;17761:21:46::0;17818:2;17798:18;;;17791:30;-1:-1:-1;;;17837:18:46;;;17830:51;17898:18;;6108:69:42::1;17577:345:46::0;6108:69:42::1;6188:17;6208:31;6232:6;6208:23;:31::i;:::-;6255:42;::::0;;18129:25:46;;;-1:-1:-1;;;;;18190:32:46;;18185:2;18170:18;;18163:60;6281:15:42::1;18239:18:46::0;;;18232:34;6255:42:42;;18190:32:46;;-1:-1:-1;6255:42:42::1;::::0;;;;;18117:2:46;6255:42:42;;::::1;6309:12;6327:9;-1:-1:-1::0;;;;;6327:14:42::1;978:10;6327:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6308:60;;;6386:7;6378:35;;;::::0;-1:-1:-1;;;6378:35:42;;18689:2:46;6378:35:42::1;::::0;::::1;18671:21:46::0;18728:2;18708:18;;;18701:30;-1:-1:-1;;;18747:18:46;;;18740:45;18802:18;;6378:35:42::1;18487:339:46::0;6378:35:42::1;4314:2106;;;;;;;;;;4235:2185:::0;:::o;733:160:0:-;356:5;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;805:12:::1;:23:::0;;-1:-1:-1;;;;;;805:23:0::1;-1:-1:-1::0;;;;;805:23:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;870:5:0;843:43:::1;::::0;;870:5;;;::::1;9543:34:46::0;;9608:2;9593:18;;9586:43;;;;843::0::1;::::0;9478:18:46;843:43:0::1;9331:304:46::0;463:320:1;675:7;701:75;718:7;727:4;733:3;;738:4;;744:7;;753:8;701:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:73;:75::i;:::-;694:82;463:320;-1:-1:-1;;;;;;;;;;463:320:1:o;27793:991:2:-;27856:4;27872:22;27904:13;27954:17;27966:4;27954:11;:17::i;:::-;27928:43;;-1:-1:-1;27928:43:2;-1:-1:-1;28050:10:2;;;:43;;;-1:-1:-1;;28064:14:2;:29;28050:43;28046:86;;;-1:-1:-1;28116:5:2;;27793:991;-1:-1:-1;;;27793:991:2:o;28046:86::-;28142:15;28160:18;28164:14;28160:1;:18;:::i;:::-;28142:36;;28194:9;28189:492;28213:5;28209:1;:9;28189:492;;;28312:4;:11;28301:7;:22;28297:73;;-1:-1:-1;28350:5:2;;27793:991;-1:-1:-1;;;;;27793:991:2:o;28297:73::-;28445:16;28464:37;28487:4;28493:7;28464:22;:37::i;:::-;28445:56;;-1:-1:-1;;28519:8:2;:23;28515:74;;-1:-1:-1;28569:5:2;;27793:991;-1:-1:-1;;;;;;27793:991:2:o;28515:74::-;28651:19;28662:8;28651:19;;:::i;:::-;;-1:-1:-1;;28220:3:2;;28189:492;;;-1:-1:-1;28766:11:2;;28755:22;;;;;-1:-1:-1;;;27793:991:2:o;29056:1004::-;29121:4;29137:22;29169:14;29221:18;29233:5;29221:11;:18::i;:::-;29194:45;;-1:-1:-1;29194:45:2;-1:-1:-1;29319:11:2;;;:44;;;-1:-1:-1;;29334:14:2;:29;29319:44;29315:87;;;-1:-1:-1;29386:5:2;;29056:1004;-1:-1:-1;;;29056:1004:2:o;29315:87::-;29412:15;29430:18;29434:14;29430:1;:18;:::i;:::-;29412:36;;29464:9;29459:497;29483:6;29479:1;:10;29459:497;;;29583:5;:12;29572:7;:23;29568:74;;-1:-1:-1;29622:5:2;;29056:1004;-1:-1:-1;;;;;29056:1004:2:o;29568:74::-;29766:16;29785:39;29809:5;29816:7;29785:23;:39::i;:::-;29766:58;;-1:-1:-1;;29842:8:2;:23;29838:74;;-1:-1:-1;29892:5:2;;29056:1004;-1:-1:-1;;;;;;29056:1004:2:o;29838:74::-;29926:19;29937:8;29926:19;;:::i;:::-;;-1:-1:-1;;29491:3:2;;29459:497;;2414:123;2475:7;2484;2510:20;2524:2;2528:1;2510:13;:20::i;:::-;2503:27;;;;2414:123;;;:::o;1092:871:1:-;1179:4;1254:6;1264:1;1254:11;1250:54;;-1:-1:-1;1288:5:1;1281:12;;1250:54;1314:15;1349:9;1344:512;1368:6;1364:1;:10;1344:512;;;1468:8;:15;1457:7;:26;1453:77;;1510:5;1503:12;;;;;;1453:77;1605:16;1624:43;1649:8;1659:7;1624:24;:43::i;:::-;1605:62;;-1:-1:-1;;1685:8:1;:32;1681:83;;1744:5;1737:12;;;;;;;1681:83;1826:19;1837:8;1826:19;;:::i;:::-;;-1:-1:-1;;1376:3:1;;1344:512;;;-1:-1:-1;1941:15:1;;1930:26;;-1:-1:-1;1092:871:1;;;;;:::o;3428:579::-;3521:12;3545;3571:15;3606:10;3601:221;3627:6;3622:2;:11;3601:221;;;3663:43;3688:8;3698:7;3663:24;:43::i;:::-;3656:50;;-1:-1:-1;;3728:4:1;:28;3720:62;;;;-1:-1:-1;;;3720:62:1;;19924:2:46;3720:62:1;;;19906:21:46;19963:2;19943:18;;;19936:30;-1:-1:-1;;;19982:18:46;;;19975:51;20043:18;;3720:62:1;19722:345:46;3720:62:1;3796:15;3807:4;3796:15;;:::i;:::-;;-1:-1:-1;3635:5:1;;3601:221;;;;3839:43;3864:8;3874:7;3839:24;:43::i;:::-;3832:50;;-1:-1:-1;;3900:4:1;:28;3892:62;;;;-1:-1:-1;;;3892:62:1;;19924:2:46;3892:62:1;;;19906:21:46;19963:2;19943:18;;;19936:30;-1:-1:-1;;;19982:18:46;;;19975:51;20043:18;;3892:62:1;19722:345:46;3892:62:1;3971:29;:8;3986:7;3995:4;3971:14;:29::i;:::-;3964:36;3428:579;-1:-1:-1;;;;;3428:579:1:o;4368:974::-;4462:12;4486:22;4518:15;4580:30;4601:8;4580:20;:30::i;:::-;4552:58;;-1:-1:-1;4552:58:1;-1:-1:-1;4628:38:1;;;4620:85;;;;-1:-1:-1;;;4620:85:1;;20274:2:46;4620:85:1;;;20256:21:46;20313:2;20293:18;;;20286:30;20352:34;20332:18;;;20325:62;-1:-1:-1;;;20403:18:46;;;20396:32;20445:19;;4620:85:1;20072:398:46;4620:85:1;4732:7;4723:6;:16;4715:45;;;;-1:-1:-1;;;4715:45:1;;20677:2:46;4715:45:1;;;20659:21:46;20716:2;20696:18;;;20689:30;-1:-1:-1;;;20735:18:46;;;20728:46;20791:18;;4715:45:1;20475:340:46;4715:45:1;4771:16;;4819:18;4823:14;4819:1;:18;:::i;:::-;4801:36;;4853:9;4848:263;4872:6;4868:1;:10;4848:263;;;4928:41;4951:8;4961:7;4928:22;:41::i;:::-;4899:70;;-1:-1:-1;4899:70:1;-1:-1:-1;4991:32:1;;;4983:63;;;;-1:-1:-1;;;4983:63:1;;21022:2:46;4983:63:1;;;21004:21:46;21061:2;21041:18;;;21034:30;-1:-1:-1;;;21080:18:46;;;21073:48;21138:18;;4983:63:1;20820:342:46;4983:63:1;5092:8;5071:18;5075:14;5071:1;:18;:::i;:::-;:29;;;;:::i;:::-;5060:40;;;;:::i;:::-;;-1:-1:-1;4880:3:1;;4848:263;;;;5150:41;5173:8;5183:7;5150:22;:41::i;:::-;5121:70;;-1:-1:-1;5121:70:1;-1:-1:-1;5209:32:1;;;5201:63;;;;-1:-1:-1;;;5201:63:1;;21022:2:46;5201:63:1;;;21004:21:46;21061:2;21041:18;;;21034:30;-1:-1:-1;;;21080:18:46;;;21073:48;21138:18;;5201:63:1;20820:342:46;5201:63:1;5281:54;5296:7;5305:25;5316:14;5305:8;:25;:::i;:::-;:29;;5333:1;5305:29;:::i;:::-;5281:8;;:54;:14;:54::i;:::-;5274:61;4368:974;-1:-1:-1;;;;;;;4368:974:1:o;10344:924:3:-;10431:16;10463:7;10474:1;10463:12;10459:55;;-1:-1:-1;10491:12:3;;;;;;;;;-1:-1:-1;10491:12:3;;;;10459:55;10523:9;10535:16;10544:7;10535:6;:16;:::i;:::-;10523:28;;10576:6;10569:4;:13;:38;;;;;10603:4;10586:6;:13;:21;;10569:38;10561:70;;;;-1:-1:-1;;;10561:70:3;;21369:2:46;10561:70:3;;;21351:21:46;21408:2;21388:18;;;21381:30;-1:-1:-1;;;21427:18:46;;;21420:49;21486:18;;10561:70:3;21167:343:46;10561:70:3;10768:4;10762:11;10755:18;;10817:7;10812:2;10807:3;10803:12;10799:26;10793:4;10786:40;10851:7;10846:3;10839:20;10978:6;10970;10966:19;10961:3;10957:29;11054:6;11049:2;11041:6;11037:15;11033:28;11098:7;11093:3;11089:17;11000:252;11129:3;11124;11121:12;11000:252;;;11233:3;11227:10;11220:4;11215:3;11211:14;11204:34;11168:2;11163:3;11159:12;11152:19;;11000:252;;;11004:116;;;10651:611;10344:924;;;;;;:::o;8412:440:42:-;8489:11;8532:1;:8;8520:1;:8;:20;8512:53;;;;-1:-1:-1;;;8512:53:42;;21717:2:46;8512:53:42;;;21699:21:46;21756:2;21736:18;;;21729:30;-1:-1:-1;;;21775:18:46;;;21768:50;21835:18;;8512:53:42;21515:344:46;8512:53:42;8651:8;;8637:11;8669:154;8690:6;8686:1;:10;8669:154;;;8729:1;8731;8729:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8721:12:42;;:1;8723;8721:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;8721:4:42;:12;8717:96;;8762:5;8753:14;;8785:13;;;;8717:96;8698:3;;8669:154;;;-1:-1:-1;8841:4:42;;8412:440;-1:-1:-1;;;;8412:440:42:o;8858:241::-;8936:7;8955:14;8972:13;:20;;;;;:::i;:::-;;-1:-1:-1;9002:13:42;;-1:-1:-1;9026:25:42;:7;8972:20;9048:2;9026:13;:25::i;:::-;9018:34;;;:::i;:::-;9077:14;;;8858:241;-1:-1:-1;;;;8858:241:42:o;9609:335:2:-;9670:11;9835:2;9829:4;9824:2;9818:9;9813:2;9809;9805:11;9802:1;9795:5;9784:54;9780:59;9893:2;9887:4;9883:2;9877:4;9874:1;9867:5;9856:40;-1:-1:-1;;9923:4:2;9917:11;;9609:335;-1:-1:-1;9609:335:2:o;14980:394::-;15069:7;15088:22;15120:21;15185:34;15207:6;15215:3;15185:21;:34::i;:::-;15151:68;;-1:-1:-1;15151:68:2;-1:-1:-1;15233:29:2;;;15229:78;;-1:-1:-1;;15278:18:2;;;;;;15229:78;15350:13;15324:23;15333:14;15324:6;:23;:::i;:::-;:39;;;;:::i;:::-;:43;;15366:1;15324:43;:::i;20911:536::-;21002:7;21042;21046:3;21042:1;:7;:::i;:::-;21025;:14;:24;21021:73;;;-1:-1:-1;;;21065:18:2;;21021:73;21103:22;;21212:31;21226:7;21235;21239:3;21235:1;:7;:::i;:::-;21212:13;:31::i;:::-;21172:71;;-1:-1:-1;21172:71:2;-1:-1:-1;21258:29:2;;;21254:78;;-1:-1:-1;;21303:18:2;;;;;;21254:78;21421:19;21396:22;21404:14;21396:5;:22;:::i;:::-;:44;;;;:::i;2999:704::-;3075:7;3084;3103:14;3120:36;3148:2;3152:3;3120:27;:36::i;:::-;3103:53;;3171:8;:13;;3183:1;3171:13;3167:70;;3208:1;3217:2;3220:3;3217:7;;;;;;;;:::i;:::-;;;;;3200:26;;-1:-1:-1;3217:7:2;;;-1:-1:-1;3200:26:2;;-1:-1:-1;3200:26:2;3167:70;3277:3;3262:12;3266:8;3262:1;:12;:::i;:::-;:18;;;;;;:::i;:::-;3250:2;:9;:30;3246:84;;;-1:-1:-1;;3317:1:2;3296:23;;;;;;;3246:84;3339:15;3368:8;:13;;3380:1;3368:13;3364:297;;3407:41;3428:18;3438:7;3442:3;3438:1;:7;:::i;:::-;3428:2;;:9;:18::i;:::-;7042:7;;;;;;7054;;;;;7041:21;;6959:110;3407:41;3397:51;;;;3364:297;;;3469:8;:13;;3481:1;3469:13;3465:196;;3508:41;3529:18;3539:7;3543:3;3539:1;:7;:::i;3529:18::-;6397:21;;;;;;6402:10;6360:6;;;;;6359:21;;;;6358:61;6485:2;6480:7;;;6468;;;6467:21;;6238:257;3508:41;3498:51;;;;3465:196;;;3570:8;:13;;3582:1;3570:13;3566:95;;3609:41;3630:18;3640:7;3644:3;3640:1;:7;:::i;3630:18::-;3623:26;;5965:22;5866:1;5793:6;;;5965:22;;;;5838:29;;;;5965:22;;;;5992:2;5964:30;;;5838:29;6056:7;5843:18;5792:29;;;;5838;;;;5791:77;;;;5918:7;;;5969:18;5917:30;6056:7;6061:2;6044:7;;;6056;;;6043:21;;5671:400;3609:41;3599:51;;;;3566:95;3670:26;;;;;-1:-1:-1;3688:7:2;-1:-1:-1;2999:704:2;;;;;;:::o;2286:759:1:-;2379:7;2398:22;2430:14;2490:37;2513:8;2523:3;2490:22;:37::i;:::-;2463:64;;-1:-1:-1;2463:64:1;-1:-1:-1;2541:38:1;;;2537:96;;-1:-1:-1;;2595:27:1;;;;;;2537:96;2643:16;;2687:18;2691:14;2687:1;:18;:::i;:::-;2669:36;;2721:9;2716:298;2740:6;2736:1;:10;2716:298;;;2796:41;2819:8;2829:7;2796:22;:41::i;:::-;2767:70;;-1:-1:-1;2767:70:1;-1:-1:-1;2855:32:1;;;2851:98;;-1:-1:-1;;2907:27:1;;;;;;;;;2851:98;2995:8;2974:18;2978:14;2974:1;:18;:::i;:::-;:29;;;;:::i;:::-;2963:40;;;;:::i;:::-;;-1:-1:-1;2748:3:1;;2716:298;;;-1:-1:-1;3031:7:1;2286:759;-1:-1:-1;;;;;;2286:759:1:o;13785:388:2:-;13873:7;;13921:8;13926:3;13921:2;:8;:::i;:::-;13905:6;:13;:24;13901:78;;;-1:-1:-1;;;654:66:2;-1:-1:-1;13966:1:2;13945:23;;13901:78;13989:22;;14086:31;14100:6;14108:8;:3;14114:2;14108:8;:::i;14086:31::-;14052:65;;;;-1:-1:-1;13785:388:2;-1:-1:-1;;;;;13785:388:2:o;1550:446::-;1640:5;1667:2;1670:3;1667:7;;;;;;;;:::i;:::-;;;;;;;1661:14;:22;1657:93;;-1:-1:-1;1706:1:2;1699:8;;1657:93;1769:2;1772:3;1769:7;;;;;;;;:::i;:::-;;;;;;;1781:4;1763:22;1759:93;;-1:-1:-1;1808:1:2;1801:8;;1759:93;1871:2;1874:3;1871:7;;;;;;;;:::i;:::-;;;;;;;1883:4;1865:22;1861:93;;-1:-1:-1;1910:1:2;1903:8;;1861:93;-1:-1:-1;1971:1:2;1550:446;;;;:::o;13493:136:3:-;13566:6;13598:23;13606:6;13614;12550:28;12566:2;12550:28;12544:35;;12417:178;388:347:46;439:8;449:6;503:3;496:4;488:6;484:17;480:27;470:55;;521:1;518;511:12;470:55;-1:-1:-1;544:20:46;;587:18;576:30;;573:50;;;619:1;616;609:12;573:50;656:4;648:6;644:17;632:29;;708:3;701:4;692:6;684;680:19;676:30;673:39;670:59;;;725:1;722;715:12;740:173;808:20;;-1:-1:-1;;;;;857:31:46;;847:42;;837:70;;903:1;900;893:12;837:70;740:173;;;:::o;918:860::-;1026:6;1034;1042;1050;1058;1066;1119:3;1107:9;1098:7;1094:23;1090:33;1087:53;;;1136:1;1133;1126:12;1087:53;1176:9;1163:23;1205:18;1246:2;1238:6;1235:14;1232:34;;;1262:1;1259;1252:12;1232:34;1301:58;1351:7;1342:6;1331:9;1327:22;1301:58;:::i;:::-;1378:8;;-1:-1:-1;1275:84:46;-1:-1:-1;1466:2:46;1451:18;;1438:32;;-1:-1:-1;1482:16:46;;;1479:36;;;1511:1;1508;1501:12;1479:36;;1550:60;1602:7;1591:8;1580:9;1576:24;1550:60;:::i;:::-;1629:8;;-1:-1:-1;1524:86:46;-1:-1:-1;;1711:2:46;1696:18;;1683:32;;-1:-1:-1;1734:38:46;1768:2;1753:18;;1734:38;:::i;:::-;1724:48;;918:860;;;;;;;;:::o;1991:615::-;2077:6;2085;2138:2;2126:9;2117:7;2113:23;2109:32;2106:52;;;2154:1;2151;2144:12;2106:52;2194:9;2181:23;2223:18;2264:2;2256:6;2253:14;2250:34;;;2280:1;2277;2270:12;2250:34;2318:6;2307:9;2303:22;2293:32;;2363:7;2356:4;2352:2;2348:13;2344:27;2334:55;;2385:1;2382;2375:12;2334:55;2425:2;2412:16;2451:2;2443:6;2440:14;2437:34;;;2467:1;2464;2457:12;2437:34;2520:7;2515:2;2505:6;2502:1;2498:14;2494:2;2490:23;2486:32;2483:45;2480:65;;;2541:1;2538;2531:12;2480:65;2572:2;2564:11;;;;;2594:6;;-1:-1:-1;1991:615:46;;-1:-1:-1;;;;1991:615:46:o;2611:180::-;2670:6;2723:2;2711:9;2702:7;2698:23;2694:32;2691:52;;;2739:1;2736;2729:12;2691:52;-1:-1:-1;2762:23:46;;2611:180;-1:-1:-1;2611:180:46:o;2796:546::-;2906:4;2935:2;2964;2953:9;2946:21;2996:6;2990:13;3039:6;3034:2;3023:9;3019:18;3012:34;3064:1;3074:140;3088:6;3085:1;3082:13;3074:140;;;3183:14;;;3179:23;;3173:30;3149:17;;;3168:2;3145:26;3138:66;3103:10;;3074:140;;;3078:3;3263:1;3258:2;3249:6;3238:9;3234:22;3230:31;3223:42;3333:2;3326;3322:7;3317:2;3309:6;3305:15;3301:29;3290:9;3286:45;3282:54;3274:62;;;;2796:546;;;;:::o;3347:785::-;3446:6;3454;3462;3470;3478;3531:2;3519:9;3510:7;3506:23;3502:32;3499:52;;;3547:1;3544;3537:12;3499:52;3587:9;3574:23;3616:18;3657:2;3649:6;3646:14;3643:34;;;3673:1;3670;3663:12;3643:34;3712:58;3762:7;3753:6;3742:9;3738:22;3712:58;:::i;:::-;3789:8;;-1:-1:-1;3686:84:46;-1:-1:-1;3877:2:46;3862:18;;3849:32;;-1:-1:-1;3893:16:46;;;3890:36;;;3922:1;3919;3912:12;3890:36;;3961:60;4013:7;4002:8;3991:9;3987:24;3961:60;:::i;:::-;3347:785;;;;-1:-1:-1;4040:8:46;4122:2;4107:18;4094:32;;3347:785;-1:-1:-1;;;;3347:785:46:o;4137:186::-;4196:6;4249:2;4237:9;4228:7;4224:23;4220:32;4217:52;;;4265:1;4262;4255:12;4217:52;4288:29;4307:9;4288:29;:::i;4695:394::-;4788:6;4841:2;4829:9;4820:7;4816:23;4812:32;4809:52;;;4857:1;4854;4847:12;4809:52;4897:9;4884:23;4930:18;4922:6;4919:30;4916:50;;;4962:1;4959;4952:12;4916:50;4985:22;;5041:3;5023:16;;;5019:26;5016:46;;;5058:1;5055;5048:12;6764:127;6825:10;6820:3;6816:20;6813:1;6806:31;6856:4;6853:1;6846:15;6880:4;6877:1;6870:15;6896:380;6975:1;6971:12;;;;7018;;;7039:61;;7093:4;7085:6;7081:17;7071:27;;7039:61;7146:2;7138:6;7135:14;7115:18;7112:38;7109:161;;7192:10;7187:3;7183:20;7180:1;7173:31;7227:4;7224:1;7217:15;7255:4;7252:1;7245:15;7109:161;;6896:380;;;:::o;7406:542::-;7507:2;7502:3;7499:11;7496:446;;;7543:1;7567:5;7564:1;7557:16;7611:4;7608:1;7598:18;7681:2;7669:10;7665:19;7662:1;7658:27;7652:4;7648:38;7717:4;7705:10;7702:20;7699:47;;;-1:-1:-1;7740:4:46;7699:47;7795:2;7790:3;7786:12;7783:1;7779:20;7773:4;7769:31;7759:41;;7850:82;7868:2;7861:5;7858:13;7850:82;;;7913:17;;;7894:1;7883:13;7850:82;;;7854:3;;;7496:446;7406:542;;;:::o;8124:1202::-;8246:18;8241:3;8238:27;8235:53;;;8268:18;;:::i;:::-;8297:93;8386:3;8346:38;8378:4;8372:11;8346:38;:::i;:::-;8340:4;8297:93;:::i;:::-;8416:1;8441:2;8436:3;8433:11;8458:1;8453:615;;;;9112:1;9129:3;9126:93;;;-1:-1:-1;9185:19:46;;;9172:33;9126:93;-1:-1:-1;;8081:1:46;8077:11;;;8073:24;8069:29;8059:40;8105:1;8101:11;;;8056:57;9232:78;;8426:894;;8453:615;7353:1;7346:14;;;7390:4;7377:18;;-1:-1:-1;;8489:17:46;;;8589:9;8611:229;8625:7;8622:1;8619:14;8611:229;;;8714:19;;;8701:33;8686:49;;8821:4;8806:20;;;;8774:1;8762:14;;;;8641:12;8611:229;;;8615:3;8868;8859:7;8856:16;8853:159;;;8992:1;8988:6;8982:3;8976;8973:1;8969:11;8965:21;8961:34;8957:39;8944:9;8939:3;8935:19;8922:33;8918:79;8910:6;8903:95;8853:159;;;9055:1;9049:3;9046:1;9042:11;9038:19;9032:4;9025:33;8426:894;;;8124:1202;;;:::o;9640:266::-;9728:6;9723:3;9716:19;9780:6;9773:5;9766:4;9761:3;9757:14;9744:43;-1:-1:-1;9832:1:46;9807:16;;;9825:4;9803:27;;;9796:38;;;;9888:2;9867:15;;;-1:-1:-1;;9863:29:46;9854:39;;;9850:50;;9640:266::o;9911:502::-;10152:2;10141:9;10134:21;10115:4;10178:61;10235:2;10224:9;10220:18;10212:6;10204;10178:61;:::i;:::-;10287:9;10279:6;10275:22;10270:2;10259:9;10255:18;10248:50;10315:49;10357:6;10349;10341;10315:49;:::i;:::-;10307:57;;;10400:6;10395:2;10384:9;10380:18;10373:34;9911:502;;;;;;;;:::o;10418:127::-;10479:10;10474:3;10470:20;10467:1;10460:31;10510:4;10507:1;10500:15;10534:4;10531:1;10524:15;10550:168;10623:9;;;10654;;10671:15;;;10665:22;;10651:37;10641:71;;10692:18;;:::i;11075:127::-;11136:10;11131:3;11127:20;11124:1;11117:31;11167:4;11164:1;11157:15;11191:4;11188:1;11181:15;11207:125;11272:9;;;11293:10;;;11290:36;;;11306:18;;:::i;11661:343::-;11863:2;11845:21;;;11902:2;11882:18;;;11875:30;-1:-1:-1;;;11936:2:46;11921:18;;11914:49;11995:2;11980:18;;11661:343::o;12720:286::-;12778:6;12831:2;12819:9;12810:7;12806:23;12802:32;12799:52;;;12847:1;12844;12837:12;12799:52;12873:23;;-1:-1:-1;;;;;;12925:32:46;;12915:43;;12905:71;;12972:1;12969;12962:12;13011:281;13069:6;13122:2;13110:9;13101:7;13097:23;13093:32;13090:52;;;13138:1;13135;13128:12;13090:52;13164:23;;-1:-1:-1;;;;;;13216:27:46;;13206:38;;13196:66;;13258:1;13255;13248:12;13297:521;13374:4;13380:6;13440:11;13427:25;13534:2;13530:7;13519:8;13503:14;13499:29;13495:43;13475:18;13471:68;13461:96;;13553:1;13550;13543:12;13461:96;13580:33;;13632:20;;;-1:-1:-1;13675:18:46;13664:30;;13661:50;;;13707:1;13704;13697:12;13661:50;13740:4;13728:17;;-1:-1:-1;13771:14:46;13767:27;;;13757:38;;13754:58;;;13808:1;13805;13798:12;15641:459;15882:6;15871:9;15864:25;15925:6;15920:2;15909:9;15905:18;15898:34;15968:3;15963:2;15952:9;15948:18;15941:31;15845:4;15989:62;16046:3;16035:9;16031:19;16023:6;16015;15989:62;:::i;:::-;15981:70;;16087:6;16082:2;16071:9;16067:18;16060:34;15641:459;;;;;;;;:::o;16105:277::-;16172:6;16225:2;16213:9;16204:7;16200:23;16196:32;16193:52;;;16241:1;16238;16231:12;16193:52;16273:9;16267:16;16326:5;16319:13;16312:21;16305:5;16302:32;16292:60;;16348:1;16345;16338:12;17444:128;17511:9;;;17532:11;;;17529:37;;;17546:18;;:::i;18831:886::-;-1:-1:-1;;;;;;19229:15:46;;;19217:28;;-1:-1:-1;;;;;;19274:28:46;;19270:1;19261:11;;19254:49;19160:3;;19346:6;19338;19334:1;19325:11;;19312:41;19381:6;19376:3;19372:16;19415:1;19411:2;19407:10;19437:1;19433:2;19426:13;19473:6;19465;19461:2;19448:32;;19507:6;19503:2;19499:15;19489:25;;19541:1;19537:2;19533:10;19563:1;19559:2;19552:13;19599:6;19591;19587:2;19574:32;-1:-1:-1;19668:15:46;;19625;;;;19664:1;19656:10;;19649:35;;;;-1:-1:-1;;19708:2:46;19700:11;;;-1:-1:-1;;;;;;;18831:886:46:o;21864:375::-;21982:12;;22030:4;22019:16;;22013:23;-1:-1:-1;;22104:11:46;;;;21982:12;22013:23;22138:2;22127:14;;22124:109;;;22220:2;22214;22204:6;22200:2;22196:15;22193:1;22189:23;22185:32;22181:2;22177:41;22173:50;22164:59;;22124:109;;;;21864:375;;;:::o;22244:148::-;22332:4;22311:12;;;22325;;;22307:31;;22350:13;;22347:39;;;22366:18;;:::i","linkReferences":{}},"methodIdentifiers":{"DEPOSIT_AMOUNT()":"ec6925a7","LIGHT_CLIENT()":"e613ae00","SYSTEM_CALLER()":"d761753e","acceptOwnership()":"79ba5097","batchWithdraw(bytes32[])":"59c19cee","deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"dd95c7c6","depositScript()":"b93780f6","getWithdrawalCount()":"781952a8","initialize(bytes,bytes,uint256,address)":"4507fc69","initialized()":"158ef93e","operator()":"570ca735","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","requiredSigsCount()":"43e31687","scriptSuffix()":"87f8bf56","setDepositScript(bytes,bytes,uint256)":"9f963f59","setOperator(address)":"b3ab15fb","spentWtxIds(bytes32)":"5e0e5b3e","transferOwnership(address)":"f2fde38b","withdraw(bytes32)":"8e19899e","withdrawalAddrs(uint256)":"d1c44456"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wtxId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositScript\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptSuffix\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"DepositScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOperator\",\"type\":\"address\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT\",\"outputs\":[{\"internalType\":\"contract BitcoinLightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"bitcoin_addresses\",\"type\":\"bytes32[]\"}],\"name\":\"batchWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.DepositParams\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredSigsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptSuffix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"setDepositScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"spentWtxIds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawalAddrs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"kind\":\"dev\",\"methods\":{\"batchWithdraw(bytes32[])\":{\"details\":\"Takes in multiple Bitcoin addresses as recipient addresses should be unique\",\"params\":{\"bitcoin_addresses\":\"The Bitcoin addresses of the receivers\"}},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"p\":\"The deposit parameters that contains the info of the deposit transaction on Bitcoin\"}},\"getWithdrawalCount()\":{\"returns\":{\"_0\":\"The count of withdrawals happened so far\"}},\"initialize(bytes,bytes,uint256,address)\":{\"params\":{\"_depositScript\":\"The deposit script expected in the witness field for all L1 deposits\",\"_requiredSigsCount\":\"The number of signatures that is contained in the deposit script\",\"_scriptSuffix\":\"The suffix of the deposit script that follows the receiver address\"}},\"setDepositScript(bytes,bytes,uint256)\":{\"details\":\"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver\",\"params\":{\"_depositScript\":\"The new deposit script\",\"_requiredSigsCount\":\"The number of signatures that are needed for deposit transaction\",\"_scriptSuffix\":\"The part of the deposit script that succeeds the receiver address\"}},\"setOperator(address)\":{\"params\":{\"_operator\":\"Address of the privileged operator\"}},\"withdraw(bytes32)\":{\"params\":{\"bitcoin_address\":\"The Bitcoin address of the receiver\"}}},\"title\":\"Bridge contract of Clementine\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batchWithdraw(bytes32[])\":{\"notice\":\"Batch version of `withdraw` that can accept multiple cBTC\"},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver\"},\"initialize(bytes,bytes,uint256,address)\":{\"notice\":\"Initializes the bridge contract and sets the deposit script\"},\"setDepositScript(bytes,bytes,uint256)\":{\"notice\":\"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness\"},\"setOperator(address)\":{\"notice\":\"Sets the operator address that can process user deposits\"},\"withdraw(bytes32)\":{\"notice\":\"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/Ownable.sol\":{\"keccak256\":\"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee\",\"dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94\"]},\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf\",\"dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e\",\"dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV\"]},\"src/Bridge.sol\":{\"keccak256\":\"0xa6ebf14954616ee14e2cb8bdc22ccb7c1fd25e949334a4fc7fcf21b3edf4cb94\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25ee56bb6481cd86166fd7e7f27e215e05141fe99776b8e623c69dc910b4e153\",\"dweb:/ipfs/QmXWtzyx9AFiU85cKGBLpXgNW7QWg3oY5cN1ak8K8kzyhD\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"wtxId","type":"bytes32","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"bytes","name":"depositScript","type":"bytes","indexed":false},{"internalType":"bytes","name":"scriptSuffix","type":"bytes","indexed":false},{"internalType":"uint256","name":"requiredSigsCount","type":"uint256","indexed":false}],"type":"event","name":"DepositScriptUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOperator","type":"address","indexed":false},{"internalType":"address","name":"newOperator","type":"address","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false}],"type":"event","name":"OwnershipTransferRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Withdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIGHT_CLIENT","outputs":[{"internalType":"contract BitcoinLightClient","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"bytes32[]","name":"bitcoin_addresses","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"batchWithdraw"},{"inputs":[{"internalType":"struct Bridge.DepositParams","name":"p","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"depositScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWithdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"requiredSigsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptSuffix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositScript"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"spentWtxIds","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalAddrs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"batchWithdraw(bytes32[])":{"details":"Takes in multiple Bitcoin addresses as recipient addresses should be unique","params":{"bitcoin_addresses":"The Bitcoin addresses of the receivers"}},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"p":"The deposit parameters that contains the info of the deposit transaction on Bitcoin"}},"getWithdrawalCount()":{"returns":{"_0":"The count of withdrawals happened so far"}},"initialize(bytes,bytes,uint256,address)":{"params":{"_depositScript":"The deposit script expected in the witness field for all L1 deposits","_requiredSigsCount":"The number of signatures that is contained in the deposit script","_scriptSuffix":"The suffix of the deposit script that follows the receiver address"}},"setDepositScript(bytes,bytes,uint256)":{"details":"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver","params":{"_depositScript":"The new deposit script","_requiredSigsCount":"The number of signatures that are needed for deposit transaction","_scriptSuffix":"The part of the deposit script that succeeds the receiver address"}},"setOperator(address)":{"params":{"_operator":"Address of the privileged operator"}},"withdraw(bytes32)":{"params":{"bitcoin_address":"The Bitcoin address of the receiver"}}},"version":1},"userdoc":{"kind":"user","methods":{"batchWithdraw(bytes32[])":{"notice":"Batch version of `withdraw` that can accept multiple cBTC"},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver"},"initialize(bytes,bytes,uint256,address)":{"notice":"Initializes the bridge contract and sets the deposit script"},"setDepositScript(bytes,bytes,uint256)":{"notice":"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness"},"setOperator(address)":{"notice":"Sets the operator address that can process user deposits"},"withdraw(bytes32)":{"notice":"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator "}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/Ownable.sol":{"keccak256":"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07","urls":["bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee","dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94"],"license":"MIT"},"lib/WitnessUtils.sol":{"keccak256":"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a","urls":["bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf","dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K"],"license":"LGPL-3.0-or-later"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f","urls":["bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e","dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0xa6ebf14954616ee14e2cb8bdc22ccb7c1fd25e949334a4fc7fcf21b3edf4cb94","urls":["bzz-raw://25ee56bb6481cd86166fd7e7f27e215e05141fe99776b8e623c69dc910b4e153","dweb:/ipfs/QmXWtzyx9AFiU85cKGBLpXgNW7QWg3oY5cN1ak8K8kzyhD"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":42} \ No newline at end of file diff --git a/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol b/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol index e822ed609..7fc8ba94e 100644 --- a/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol +++ b/crates/evm/src/evm/system_contracts/test/BitcoinLightClient.t.sol @@ -3,7 +3,18 @@ pragma solidity ^0.8.13; import "forge-std/Test.sol"; import "../src/BitcoinLightClient.sol"; -import "openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol"; +import "openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol"; + + +contract Placeholder is UUPSUpgradeable { + function _authorizeUpgrade(address newImplementation) internal override {} +} + +contract FalseClient is BitcoinLightClient { + function getBlockHashFalse(uint256 _blockNumber) public view returns (bytes32) { + return keccak256("false"); + } +} contract BitcoinLightClientTest is Test { @@ -12,10 +23,18 @@ contract BitcoinLightClientTest is Test { bytes32 mockWitnessRoot = bytes32(keccak256("CITREA")); uint256 constant INITIAL_BLOCK_NUMBER = 505050; address constant SYSTEM_CALLER = address(0xdeaDDeADDEaDdeaDdEAddEADDEAdDeadDEADDEaD); + address owner = address(0x013); + function setUp() public { address lightClient_impl = address(new BitcoinLightClient()); - vm.etch(address(bitcoinLightClient), lightClient_impl.code); + address placeholder = address(new Placeholder()); + address erc1967_impl = address(new ERC1967Proxy(placeholder, "")); + vm.etch(address(bitcoinLightClient), erc1967_impl.code); + bytes32 IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + bytes32 OWNER_SLOT = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300; + vm.store(address(bitcoinLightClient), IMPLEMENTATION_SLOT, bytes32(uint256(uint160(lightClient_impl)))); + vm.store(address(bitcoinLightClient), OWNER_SLOT, bytes32(uint256(uint160(owner)))); vm.startPrank(SYSTEM_CALLER); } @@ -87,4 +106,32 @@ contract BitcoinLightClientTest is Test { assert(bitcoinLightClient.verifyInclusion(mockBlockHash, wtxId, abi.encodePacked(proof), 1)); assert(bitcoinLightClient.verifyInclusion(INITIAL_BLOCK_NUMBER, wtxId, abi.encodePacked(proof), 1)); } + + function testUpgrade() public { + address newImpl = address(new FalseClient()); + vm.stopPrank(); + vm.prank(owner); + bitcoinLightClient.upgradeToAndCall(newImpl, ""); + assertEq(FalseClient(address(bitcoinLightClient)).getBlockHashFalse(0), keccak256("false")); + } + + function testNonOwnerCannotUpgrade() public { + vm.stopPrank(); + vm.prank(address(0x1)); + address newImpl = address(new FalseClient()); + vm.expectRevert(); + bitcoinLightClient.upgradeToAndCall(newImpl, ""); + } + + function testOwnerCanChangeAndUpgrade() public { + address newImpl = address(new FalseClient()); + vm.stopPrank(); + address newOwner = address(0x051323242); + vm.prank(owner); + bitcoinLightClient.transferOwnership(newOwner); + vm.startPrank(newOwner); + bitcoinLightClient.acceptOwnership(); + bitcoinLightClient.upgradeToAndCall(newImpl, ""); + assertEq(FalseClient(address(bitcoinLightClient)).getBlockHashFalse(0), keccak256("false")); + } } \ No newline at end of file From 639d83494fa0a25ce6b4793c0b1b320abfa95435 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:10:03 +0300 Subject: [PATCH 05/31] Fix base fee calc in test --- bin/citrea/tests/e2e/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/citrea/tests/e2e/mod.rs b/bin/citrea/tests/e2e/mod.rs index 715674dbf..53a876231 100644 --- a/bin/citrea/tests/e2e/mod.rs +++ b/bin/citrea/tests/e2e/mod.rs @@ -2095,7 +2095,7 @@ async fn transaction_failing_on_l1_is_removed_from_mempool() -> Result<(), anyho let random_wallet_address = random_wallet.address(); - let second_block_base_fee = 768810081; + let second_block_base_fee = 768881663; let _pending = seq_test_client .send_eth( From edfc11faed00aa50240729c64efdf5856d5228e4 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:21:52 +0300 Subject: [PATCH 06/31] Make bridge upgradeable --- .../out/Bridge.sol/Bridge.json | 2 +- .../src/evm/system_contracts/src/Bridge.sol | 10 ++-- .../evm/system_contracts/test/Bridge.t.sol | 50 +++++++++++++++++-- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json b/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json index c80794033..b1d5db6d9 100644 --- a/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json +++ b/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"LIGHT_CLIENT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract BitcoinLightClient"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchWithdraw","inputs":[{"name":"bitcoin_addresses","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposit","inputs":[{"name":"p","type":"tuple","internalType":"struct Bridge.DepositParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositScript","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"},{"name":"_owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requiredSigsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"scriptSuffix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setDepositScript","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"spentWtxIds","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"bitcoin_address","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawalAddrs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Deposit","inputs":[{"name":"wtxId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DepositScriptUpdate","inputs":[{"name":"depositScript","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"scriptSuffix","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"requiredSigsCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"oldOperator","type":"address","indexed":false,"internalType":"address"},{"name":"newOperator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferRequested","inputs":[{"name":"previousOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"name":"bitcoin_address","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50600080546001600160a01b0319163317905561252d806100316000396000f3fe6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212207d45d2ca9fa8bc6e53c5359bdfdaaf6aeb4be2e368e8d1823a2078308fbb43b964736f6c63430008190033","sourceMap":"336:8765:42:-:0;;;;;;;;;;;;-1:-1:-1;561:5:0;:18;;-1:-1:-1;;;;;;561:18:0;569:10;561:18;;;336:8765:42;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212207d45d2ca9fa8bc6e53c5359bdfdaaf6aeb4be2e368e8d1823a2078308fbb43b964736f6c63430008190033","sourceMap":"336:8765:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;908:23;;;;;;;;;;-1:-1:-1;908:23:42;;;;-1:-1:-1;;;908:23:42;;;;;;;;;179:14:46;;172:22;154:41;;142:2;127:18;908:23:42;;;;;;;;1023:32;;;;;;;;;;;;;;;;;;;352:25:46;;;340:2;325:18;1023:32:42;206:177:46;2159:850:42;;;;;;;;;;-1:-1:-1;2159:850:42;;;;;:::i;:::-;;:::i;:::-;;994:23;;;;;;;;;;-1:-1:-1;994:23:42;;;;-1:-1:-1;;;;;994:23:42;;;;;;-1:-1:-1;;;;;1947:32:46;;;1929:51;;1917:2;1902:18;994:23:42;1783:203:46;7220:440:42;;;;;;:::i;:::-;;:::i;1129:43::-;;;;;;;;;;-1:-1:-1;1129:43:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;592:135:0;;;;;;;;;;;;;:::i;7723:108:42:-;;;;;;;;;;-1:-1:-1;7802:15:42;:22;7723:108;;899:218:0;;;;;;;;;;;;;:::i;1093:25:42:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;90:20:0:-;;;;;;;;;;-1:-1:-1;90:20:0;;;;-1:-1:-1;;;;;90:20:0;;;6674:301:42;;;;;;:::i;:::-;;:::i;3502:505::-;;;;;;;;;;-1:-1:-1;3502:505:42;;;;;:::i;:::-;;:::i;7974:147::-;;;;;;;;;;-1:-1:-1;7974:147:42;;;;;:::i;:::-;;:::i;1061:26::-;;;;;;;;;;;;;:::i;1178:32::-;;;;;;;;;;-1:-1:-1;1178:32:42;;;;;:::i;:::-;;:::i;810:91::-;;;;;;;;;;;;858:42;810:91;;4235:2185;;;;;;;;;;-1:-1:-1;4235:2185:42;;;;;:::i;:::-;;:::i;116:27:0:-;;;;;;;;;;-1:-1:-1;116:27:0;;;;-1:-1:-1;;;;;116:27:0;;;683:121:42;;;;;;;;;;;;-1:-1:-1;;;;;683:121:42;;937:51;;;;;;;;;;;;978:10;937:51;;733:160:0;;;;;;;;;;-1:-1:-1;733:160:0;;;;;:::i;:::-;;:::i;2159:850:42:-;1583:10;858:42;1583:27;1575:71;;;;-1:-1:-1;;;1575:71:42;;5532:2:46;1575:71:42;;;5514:21:46;5571:2;5551:18;;;5544:30;5610:33;5590:18;;;5583:61;5661:18;;1575:71:42;;;;;;;;;2323:11:::1;::::0;-1:-1:-1;;;2323:11:42;::::1;;;2322:12;2314:56;;;::::0;-1:-1:-1;;;2314:56:42;;5892:2:46;2314:56:42::1;::::0;::::1;5874:21:46::0;5931:2;5911:18;;;5904:30;5970:33;5950:18;;;5943:61;6021:18;;2314:56:42::1;5690:355:46::0;2314:56:42::1;2388:18;2410:1;2388:23:::0;2380:62:::1;;;::::0;-1:-1:-1;;;2380:62:42;;6252:2:46;2380:62:42::1;::::0;::::1;6234:21:46::0;6291:2;6271:18;;;6264:30;6330:28;6310:18;;;6303:56;6376:18;;2380:62:42::1;6050:350:46::0;2380:62:42::1;2485:1;2460:26:::0;;;2452:69:::1;;;::::0;-1:-1:-1;;;2452:69:42;;6607:2:46;2452:69:42::1;::::0;::::1;6589:21:46::0;6646:2;6626:18;;;6619:30;6685:32;6665:18;;;6658:60;6735:18;;2452:69:42::1;6405:354:46::0;2452:69:42::1;2546:4;2532:18:::0;;-1:-1:-1;;;;2532:18:42::1;-1:-1:-1::0;;;2532:18:42::1;::::0;;2560:13:::1;:30;2576:14:::0;;2560:13;:30:::1;:::i;:::-;-1:-1:-1::0;2600:12:42::1;:28;2615:13:::0;;2600:12;:28:::1;:::i;:::-;-1:-1:-1::0;2638:17:42::1;:38:::0;;;2811:8:::1;:24:::0;;858:42:::1;-1:-1:-1::0;;;;;;2811:24:42;;::::1;::::0;::::1;::::0;;;-1:-1:-1;2845:14:42;;;;::::1;-1:-1:-1::0;;;;;2845:14:42;::::1;;::::0;;2875:42:::1;::::0;;9543:34:46;;;9608:2;9593:18;;9586:43;;;;2875:42:42::1;::::0;9478:18:46;2875:42:42::1;;;;;;;2932:70;2952:14;;2968:13;;2983:18;2932:70;;;;;;;;;;:::i;:::-;;;;;;;;2159:850:::0;;;;;;:::o;7220:440::-;7329:41;7346:17;978:10;7329:41;:::i;:::-;7316:9;:54;7308:90;;;;-1:-1:-1;;;7308:90:42;;10925:2:46;7308:90:42;;;10907:21:46;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:46;;;10976:53;11046:18;;7308:90:42;10723:347:46;7308:90:42;7424:15;:22;7408:13;7456:198;7473:28;;;7456:198;;;7522:15;7543:17;;7561:1;7543:20;;;;;;;:::i;:::-;7522:42;;;;;;;-1:-1:-1;7522:42:42;;;7543:20;7522:42;;;;7543:20;;;;;;;;;7522:42;;;;;-1:-1:-1;7583:60:42;7594:17;;7612:1;7594:20;;;;;;;:::i;:::-;;;;;;;7624:1;7616:5;:9;;;;:::i;:::-;7583:60;;;11539:25:46;;;11595:2;11580:18;;11573:34;;;;7627:15:42;11623:18:46;;;11616:34;11527:2;11512:18;7583:60:42;;;;;;;7503:3;;7456:198;;;;7298:362;7220:440;;:::o;592:135:0:-;356:5;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;664:1:::1;648:18:::0;;-1:-1:-1;;;;;;648:18:0::1;::::0;;681:39:::1;::::0;;9543:34:46;;;9608:2;9593:18;;9586:43;;;;681:39:0::1;::::0;9478:18:46;681:39:0::1;;;;;;;592:135::o:0;899:218::-;469:12;;-1:-1:-1;;;;;469:12:0;455:10;:26;447:66;;;;-1:-1:-1;;;447:66:0;;12211:2:46;447:66:0;;;12193:21:46;12250:2;12230:18;;;12223:30;12289:29;12269:18;;;12262:57;12336:18;;447:66:0;12009:351:46;447:66:0;960:17:::1;980:5:::0;;;1003:12;;-1:-1:-1;;;;;;995:20:0;;::::1;-1:-1:-1::0;;;;;1003:12:0;;::::1;995:20:::0;;;::::1;::::0;;1025:25;::::1;::::0;;;1065:45:::1;::::0;;980:5;;;::::1;9543:34:46::0;;;9608:2;9593:18;;9586:43;;;;1065:45:0::1;::::0;9478:18:46;1065:45:0::1;;;;;;;;950:167;899:218::o:0;1093:25:42:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6674:301::-;978:10;6752:9;:27;6744:63;;;;-1:-1:-1;;;6744:63:42;;10925:2:46;6744:63:42;;;10907:21:46;10964:2;10944:18;;;10937:30;-1:-1:-1;;;10983:18:46;;;10976:53;11046:18;;6744:63:42;10723:347:46;6744:63:42;6833:15;:22;;6865:37;;;;;-1:-1:-1;6865:37:42;;;;;;;;;;6917:51;;;11539:25:46;;;11595:2;11580:18;;11573:34;;;6952:15:42;11623:18:46;;;11616:34;6917:51:42;;;;;;;11527:2:46;6917:51:42;;;6734:241;6674:301;:::o;3502:505::-;356:5:0;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;3654:18:42::1;3676:1;3654:23:::0;3646:62:::1;;;::::0;-1:-1:-1;;;3646:62:42;;6252:2:46;3646:62:42::1;::::0;::::1;6234:21:46::0;6291:2;6271:18;;;6264:30;6330:28;6310:18;;;6303:56;6376:18;;3646:62:42::1;6050:350:46::0;3646:62:42::1;3751:1;3726:26:::0;;;3718:69:::1;;;::::0;-1:-1:-1;;;3718:69:42;;6607:2:46;3718:69:42::1;::::0;::::1;6589:21:46::0;6646:2;6626:18;;;6619:30;6685:32;6665:18;;;6658:60;6735:18;;3718:69:42::1;6405:354:46::0;3718:69:42::1;3798:13;:30;3814:14:::0;;3798:13;:30:::1;:::i;:::-;-1:-1:-1::0;3838:12:42::1;:28;3853:13:::0;;3838:12;:28:::1;:::i;:::-;-1:-1:-1::0;3876:17:42::1;:38:::0;;;3930:70:::1;::::0;::::1;::::0;::::1;::::0;3950:14;;;;3966:13;;;;3896:18;;3930:70:::1;:::i;:::-;;;;;;;;3502:505:::0;;;;;:::o;7974:147::-;356:5:0;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;8043:8:42::1;:20:::0;;-1:-1:-1;;;;;;8043:20:42::1;-1:-1:-1::0;;;;;8043:20:42;::::1;::::0;;::::1;::::0;;;8078:36:::1;::::0;;9543:34:46;;;9608:2;9593:18;;9586:43;;;;8078:36:42::1;::::0;9478:18:46;8078:36:42::1;9331:304:46::0;1061:26:42;;;;;;;:::i;1178:32::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1178:32:42;:::o;4235:2185::-;1726:8;;-1:-1:-1;;;;;1726:8:42;1712:10;:22;1704:61;;;;-1:-1:-1;;;1704:61:42;;12567:2:46;1704:61:42;;;12549:21:46;12606:2;12586:18;;;12579:30;12645:28;12625:18;;;12618:56;12691:18;;1704:61:42;12365:350:46;1704:61:42;4661:13:::1;4677:84;4705:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4716:6;::::0;;;::::1;::::0;::::1;;:::i;:::-;4724:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;4731:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4739:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4750:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4677:27;:84::i;:::-;4780:18;::::0;;;:11:::1;:18;::::0;;;;;4661:100;;-1:-1:-1;4780:18:42::1;;4779:19;4771:51;;;::::0;-1:-1:-1;;;4771:51:42;;14025:2:46;4771:51:42::1;::::0;::::1;14007:21:46::0;14064:2;14044:18;;;14037:30;-1:-1:-1;;;14083:18:46;;;14076:49;14142:18;;4771:51:42::1;13823:343:46::0;4771:51:42::1;4832:18;::::0;;;:11:::1;:18;::::0;;;;;;:25;;-1:-1:-1;;4832:25:42::1;4853:4;4832:25;::::0;;4876:27:::1;::::0;4897:5:::1;::::0;;::::1;:1:::0;:5:::1;:::i;:::-;4876:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4876:20:42::1;::::0;-1:-1:-1;;;4876:27:42:i:1;:::-;4868:69;;;::::0;-1:-1:-1;;;4868:69:42;;14373:2:46;4868:69:42::1;::::0;::::1;14355:21:46::0;14412:2;14392:18;;;14385:30;14451:31;14431:18;;;14424:59;14500:18;;4868:69:42::1;14171:353:46::0;4868:69:42::1;4955:29;4977:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4955:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4955:21:42::1;::::0;-1:-1:-1;;;4955:29:42:i:1;:::-;4947:72;;;::::0;-1:-1:-1;;;4947:72:42;;14731:2:46;4947:72:42::1;::::0;::::1;14713:21:46::0;14770:2;14750:18;;;14743:30;14809:32;14789:18;;;14782:60;14859:18;;4947:72:42::1;14529:354:46::0;4947:72:42::1;5041:13;5058:27;5079:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;5058:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5058:20:42::1;::::0;-1:-1:-1;;;5058:27:42:i:1;:::-;5038:47;;;5103:5;5112:1;5103:10;5095:45;;;::::0;-1:-1:-1;;;5095:45:42;;15090:2:46;5095:45:42::1;::::0;::::1;15072:21:46::0;15129:2;15109:18;;;15102:30;-1:-1:-1;;;15148:18:46;;;15141:52;15210:18;;5095:45:42::1;14888:346:46::0;5095:45:42::1;5209:46;5238:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5209:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5249:5:42;;-1:-1:-1;5209:28:42::1;::::0;-1:-1:-1;;5209:46:42:i:1;:::-;5201:92;;;::::0;-1:-1:-1;;;5201:92:42;;15441:2:46;5201:92:42::1;::::0;::::1;15423:21:46::0;15480:2;15460:18;;;15453:30;15519:34;15499:18;;;15492:62;-1:-1:-1;;;15570:18:46;;;15563:31;15611:19;;5201:92:42::1;15239:397:46::0;5201:92:42::1;-1:-1:-1::0;;;;;5312:28:42::1;5341:14;::::0;::::1;;5357:5:::0;5364:20:::1;;::::0;::::1;5341:1:::0;5364:20:::1;:::i;:::-;5386:1;:7;;;5312:82;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5304:122;;;::::0;-1:-1:-1;;;5304:122:42;;16589:2:46;5304:122:42::1;::::0;::::1;16571:21:46::0;16628:2;16608:18;;;16601:30;16667:29;16647:18;;;16640:57;16714:18;;5304:122:42::1;16387:351:46::0;5304:122:42::1;5437:21;5461:48;5496:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5461:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5461:48:42;-1:-1:-1;5461:34:42::1;::::0;-1:-1:-1;;5461:48:42:i:1;:::-;5437:72;;5522:15;5541:30;5562:8;5541:20;:30::i;:::-;5519:52;;;5600:17;;5620:1;5600:21;;;;:::i;:::-;5589:7;:32;5581:66;;;::::0;-1:-1:-1;;;5581:66:42;;16945:2:46;5581:66:42::1;::::0;::::1;16927:21:46::0;16984:2;16964:18;;;16957:30;-1:-1:-1;;;17003:18:46;;;16996:51;17064:18;;5581:66:42::1;16743:345:46::0;5581:66:42::1;5709:19;5731:64;5767:8;5777:17;;5731:35;:64::i;:::-;5709:86;;5805:12;5820:13;:20;;;;;:::i;:::-;::::0;-1:-1:-1;5850:27:42::1;::::0;-1:-1:-1;5880:21:42::1;:6:::0;5850:27;5820:20;5880:12:::1;:21::i;:::-;5850:51;;5919:43;5932:14;5948:13;5919:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:43::i;:::-;5911:78;;;::::0;-1:-1:-1;;;5911:78:42;;17295:2:46;5911:78:42::1;::::0;::::1;17277:21:46::0;17334:2;17314:18;;;17307:30;-1:-1:-1;;;17353:18:46;;;17346:52;17415:18;;5911:78:42::1;17093:346:46::0;5911:78:42::1;5999:20;6022:52;6035:9;:4:::0;6042:2:::1;6035:9;:::i;:::-;6063;:4:::0;6070:2:::1;6063:9;:::i;:::-;6046:6;:13;:27;;;;:::i;:::-;6022:6:::0;;:52;:12:::1;:52::i;:::-;5999:75;;6116:35;6129:7;6138:12;6116:35;;;;;:::i;:::-;6108:69;;;::::0;-1:-1:-1;;;6108:69:42;;17779:2:46;6108:69:42::1;::::0;::::1;17761:21:46::0;17818:2;17798:18;;;17791:30;-1:-1:-1;;;17837:18:46;;;17830:51;17898:18;;6108:69:42::1;17577:345:46::0;6108:69:42::1;6188:17;6208:31;6232:6;6208:23;:31::i;:::-;6255:42;::::0;;18129:25:46;;;-1:-1:-1;;;;;18190:32:46;;18185:2;18170:18;;18163:60;6281:15:42::1;18239:18:46::0;;;18232:34;6255:42:42;;18190:32:46;;-1:-1:-1;6255:42:42::1;::::0;;;;;18117:2:46;6255:42:42;;::::1;6309:12;6327:9;-1:-1:-1::0;;;;;6327:14:42::1;978:10;6327:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6308:60;;;6386:7;6378:35;;;::::0;-1:-1:-1;;;6378:35:42;;18689:2:46;6378:35:42::1;::::0;::::1;18671:21:46::0;18728:2;18708:18;;;18701:30;-1:-1:-1;;;18747:18:46;;;18740:45;18802:18;;6378:35:42::1;18487:339:46::0;6378:35:42::1;4314:2106;;;;;;;;;;4235:2185:::0;:::o;733:160:0:-;356:5;;-1:-1:-1;;;;;356:5:0;342:10;:19;334:51;;;;-1:-1:-1;;;334:51:0;;;;;;;:::i;:::-;805:12:::1;:23:::0;;-1:-1:-1;;;;;;805:23:0::1;-1:-1:-1::0;;;;;805:23:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;870:5:0;843:43:::1;::::0;;870:5;;;::::1;9543:34:46::0;;9608:2;9593:18;;9586:43;;;;843::0::1;::::0;9478:18:46;843:43:0::1;9331:304:46::0;463:320:1;675:7;701:75;718:7;727:4;733:3;;738:4;;744:7;;753:8;701:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:73;:75::i;:::-;694:82;463:320;-1:-1:-1;;;;;;;;;;463:320:1:o;27793:991:2:-;27856:4;27872:22;27904:13;27954:17;27966:4;27954:11;:17::i;:::-;27928:43;;-1:-1:-1;27928:43:2;-1:-1:-1;28050:10:2;;;:43;;;-1:-1:-1;;28064:14:2;:29;28050:43;28046:86;;;-1:-1:-1;28116:5:2;;27793:991;-1:-1:-1;;;27793:991:2:o;28046:86::-;28142:15;28160:18;28164:14;28160:1;:18;:::i;:::-;28142:36;;28194:9;28189:492;28213:5;28209:1;:9;28189:492;;;28312:4;:11;28301:7;:22;28297:73;;-1:-1:-1;28350:5:2;;27793:991;-1:-1:-1;;;;;27793:991:2:o;28297:73::-;28445:16;28464:37;28487:4;28493:7;28464:22;:37::i;:::-;28445:56;;-1:-1:-1;;28519:8:2;:23;28515:74;;-1:-1:-1;28569:5:2;;27793:991;-1:-1:-1;;;;;;27793:991:2:o;28515:74::-;28651:19;28662:8;28651:19;;:::i;:::-;;-1:-1:-1;;28220:3:2;;28189:492;;;-1:-1:-1;28766:11:2;;28755:22;;;;;-1:-1:-1;;;27793:991:2:o;29056:1004::-;29121:4;29137:22;29169:14;29221:18;29233:5;29221:11;:18::i;:::-;29194:45;;-1:-1:-1;29194:45:2;-1:-1:-1;29319:11:2;;;:44;;;-1:-1:-1;;29334:14:2;:29;29319:44;29315:87;;;-1:-1:-1;29386:5:2;;29056:1004;-1:-1:-1;;;29056:1004:2:o;29315:87::-;29412:15;29430:18;29434:14;29430:1;:18;:::i;:::-;29412:36;;29464:9;29459:497;29483:6;29479:1;:10;29459:497;;;29583:5;:12;29572:7;:23;29568:74;;-1:-1:-1;29622:5:2;;29056:1004;-1:-1:-1;;;;;29056:1004:2:o;29568:74::-;29766:16;29785:39;29809:5;29816:7;29785:23;:39::i;:::-;29766:58;;-1:-1:-1;;29842:8:2;:23;29838:74;;-1:-1:-1;29892:5:2;;29056:1004;-1:-1:-1;;;;;;29056:1004:2:o;29838:74::-;29926:19;29937:8;29926:19;;:::i;:::-;;-1:-1:-1;;29491:3:2;;29459:497;;2414:123;2475:7;2484;2510:20;2524:2;2528:1;2510:13;:20::i;:::-;2503:27;;;;2414:123;;;:::o;1092:871:1:-;1179:4;1254:6;1264:1;1254:11;1250:54;;-1:-1:-1;1288:5:1;1281:12;;1250:54;1314:15;1349:9;1344:512;1368:6;1364:1;:10;1344:512;;;1468:8;:15;1457:7;:26;1453:77;;1510:5;1503:12;;;;;;1453:77;1605:16;1624:43;1649:8;1659:7;1624:24;:43::i;:::-;1605:62;;-1:-1:-1;;1685:8:1;:32;1681:83;;1744:5;1737:12;;;;;;;1681:83;1826:19;1837:8;1826:19;;:::i;:::-;;-1:-1:-1;;1376:3:1;;1344:512;;;-1:-1:-1;1941:15:1;;1930:26;;-1:-1:-1;1092:871:1;;;;;:::o;3428:579::-;3521:12;3545;3571:15;3606:10;3601:221;3627:6;3622:2;:11;3601:221;;;3663:43;3688:8;3698:7;3663:24;:43::i;:::-;3656:50;;-1:-1:-1;;3728:4:1;:28;3720:62;;;;-1:-1:-1;;;3720:62:1;;19924:2:46;3720:62:1;;;19906:21:46;19963:2;19943:18;;;19936:30;-1:-1:-1;;;19982:18:46;;;19975:51;20043:18;;3720:62:1;19722:345:46;3720:62:1;3796:15;3807:4;3796:15;;:::i;:::-;;-1:-1:-1;3635:5:1;;3601:221;;;;3839:43;3864:8;3874:7;3839:24;:43::i;:::-;3832:50;;-1:-1:-1;;3900:4:1;:28;3892:62;;;;-1:-1:-1;;;3892:62:1;;19924:2:46;3892:62:1;;;19906:21:46;19963:2;19943:18;;;19936:30;-1:-1:-1;;;19982:18:46;;;19975:51;20043:18;;3892:62:1;19722:345:46;3892:62:1;3971:29;:8;3986:7;3995:4;3971:14;:29::i;:::-;3964:36;3428:579;-1:-1:-1;;;;;3428:579:1:o;4368:974::-;4462:12;4486:22;4518:15;4580:30;4601:8;4580:20;:30::i;:::-;4552:58;;-1:-1:-1;4552:58:1;-1:-1:-1;4628:38:1;;;4620:85;;;;-1:-1:-1;;;4620:85:1;;20274:2:46;4620:85:1;;;20256:21:46;20313:2;20293:18;;;20286:30;20352:34;20332:18;;;20325:62;-1:-1:-1;;;20403:18:46;;;20396:32;20445:19;;4620:85:1;20072:398:46;4620:85:1;4732:7;4723:6;:16;4715:45;;;;-1:-1:-1;;;4715:45:1;;20677:2:46;4715:45:1;;;20659:21:46;20716:2;20696:18;;;20689:30;-1:-1:-1;;;20735:18:46;;;20728:46;20791:18;;4715:45:1;20475:340:46;4715:45:1;4771:16;;4819:18;4823:14;4819:1;:18;:::i;:::-;4801:36;;4853:9;4848:263;4872:6;4868:1;:10;4848:263;;;4928:41;4951:8;4961:7;4928:22;:41::i;:::-;4899:70;;-1:-1:-1;4899:70:1;-1:-1:-1;4991:32:1;;;4983:63;;;;-1:-1:-1;;;4983:63:1;;21022:2:46;4983:63:1;;;21004:21:46;21061:2;21041:18;;;21034:30;-1:-1:-1;;;21080:18:46;;;21073:48;21138:18;;4983:63:1;20820:342:46;4983:63:1;5092:8;5071:18;5075:14;5071:1;:18;:::i;:::-;:29;;;;:::i;:::-;5060:40;;;;:::i;:::-;;-1:-1:-1;4880:3:1;;4848:263;;;;5150:41;5173:8;5183:7;5150:22;:41::i;:::-;5121:70;;-1:-1:-1;5121:70:1;-1:-1:-1;5209:32:1;;;5201:63;;;;-1:-1:-1;;;5201:63:1;;21022:2:46;5201:63:1;;;21004:21:46;21061:2;21041:18;;;21034:30;-1:-1:-1;;;21080:18:46;;;21073:48;21138:18;;5201:63:1;20820:342:46;5201:63:1;5281:54;5296:7;5305:25;5316:14;5305:8;:25;:::i;:::-;:29;;5333:1;5305:29;:::i;:::-;5281:8;;:54;:14;:54::i;:::-;5274:61;4368:974;-1:-1:-1;;;;;;;4368:974:1:o;10344:924:3:-;10431:16;10463:7;10474:1;10463:12;10459:55;;-1:-1:-1;10491:12:3;;;;;;;;;-1:-1:-1;10491:12:3;;;;10459:55;10523:9;10535:16;10544:7;10535:6;:16;:::i;:::-;10523:28;;10576:6;10569:4;:13;:38;;;;;10603:4;10586:6;:13;:21;;10569:38;10561:70;;;;-1:-1:-1;;;10561:70:3;;21369:2:46;10561:70:3;;;21351:21:46;21408:2;21388:18;;;21381:30;-1:-1:-1;;;21427:18:46;;;21420:49;21486:18;;10561:70:3;21167:343:46;10561:70:3;10768:4;10762:11;10755:18;;10817:7;10812:2;10807:3;10803:12;10799:26;10793:4;10786:40;10851:7;10846:3;10839:20;10978:6;10970;10966:19;10961:3;10957:29;11054:6;11049:2;11041:6;11037:15;11033:28;11098:7;11093:3;11089:17;11000:252;11129:3;11124;11121:12;11000:252;;;11233:3;11227:10;11220:4;11215:3;11211:14;11204:34;11168:2;11163:3;11159:12;11152:19;;11000:252;;;11004:116;;;10651:611;10344:924;;;;;;:::o;8412:440:42:-;8489:11;8532:1;:8;8520:1;:8;:20;8512:53;;;;-1:-1:-1;;;8512:53:42;;21717:2:46;8512:53:42;;;21699:21:46;21756:2;21736:18;;;21729:30;-1:-1:-1;;;21775:18:46;;;21768:50;21835:18;;8512:53:42;21515:344:46;8512:53:42;8651:8;;8637:11;8669:154;8690:6;8686:1;:10;8669:154;;;8729:1;8731;8729:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8721:12:42;;:1;8723;8721:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;8721:4:42;:12;8717:96;;8762:5;8753:14;;8785:13;;;;8717:96;8698:3;;8669:154;;;-1:-1:-1;8841:4:42;;8412:440;-1:-1:-1;;;;8412:440:42:o;8858:241::-;8936:7;8955:14;8972:13;:20;;;;;:::i;:::-;;-1:-1:-1;9002:13:42;;-1:-1:-1;9026:25:42;:7;8972:20;9048:2;9026:13;:25::i;:::-;9018:34;;;:::i;:::-;9077:14;;;8858:241;-1:-1:-1;;;;8858:241:42:o;9609:335:2:-;9670:11;9835:2;9829:4;9824:2;9818:9;9813:2;9809;9805:11;9802:1;9795:5;9784:54;9780:59;9893:2;9887:4;9883:2;9877:4;9874:1;9867:5;9856:40;-1:-1:-1;;9923:4:2;9917:11;;9609:335;-1:-1:-1;9609:335:2:o;14980:394::-;15069:7;15088:22;15120:21;15185:34;15207:6;15215:3;15185:21;:34::i;:::-;15151:68;;-1:-1:-1;15151:68:2;-1:-1:-1;15233:29:2;;;15229:78;;-1:-1:-1;;15278:18:2;;;;;;15229:78;15350:13;15324:23;15333:14;15324:6;:23;:::i;:::-;:39;;;;:::i;:::-;:43;;15366:1;15324:43;:::i;20911:536::-;21002:7;21042;21046:3;21042:1;:7;:::i;:::-;21025;:14;:24;21021:73;;;-1:-1:-1;;;21065:18:2;;21021:73;21103:22;;21212:31;21226:7;21235;21239:3;21235:1;:7;:::i;:::-;21212:13;:31::i;:::-;21172:71;;-1:-1:-1;21172:71:2;-1:-1:-1;21258:29:2;;;21254:78;;-1:-1:-1;;21303:18:2;;;;;;21254:78;21421:19;21396:22;21404:14;21396:5;:22;:::i;:::-;:44;;;;:::i;2999:704::-;3075:7;3084;3103:14;3120:36;3148:2;3152:3;3120:27;:36::i;:::-;3103:53;;3171:8;:13;;3183:1;3171:13;3167:70;;3208:1;3217:2;3220:3;3217:7;;;;;;;;:::i;:::-;;;;;3200:26;;-1:-1:-1;3217:7:2;;;-1:-1:-1;3200:26:2;;-1:-1:-1;3200:26:2;3167:70;3277:3;3262:12;3266:8;3262:1;:12;:::i;:::-;:18;;;;;;:::i;:::-;3250:2;:9;:30;3246:84;;;-1:-1:-1;;3317:1:2;3296:23;;;;;;;3246:84;3339:15;3368:8;:13;;3380:1;3368:13;3364:297;;3407:41;3428:18;3438:7;3442:3;3438:1;:7;:::i;:::-;3428:2;;:9;:18::i;:::-;7042:7;;;;;;7054;;;;;7041:21;;6959:110;3407:41;3397:51;;;;3364:297;;;3469:8;:13;;3481:1;3469:13;3465:196;;3508:41;3529:18;3539:7;3543:3;3539:1;:7;:::i;3529:18::-;6397:21;;;;;;6402:10;6360:6;;;;;6359:21;;;;6358:61;6485:2;6480:7;;;6468;;;6467:21;;6238:257;3508:41;3498:51;;;;3465:196;;;3570:8;:13;;3582:1;3570:13;3566:95;;3609:41;3630:18;3640:7;3644:3;3640:1;:7;:::i;3630:18::-;3623:26;;5965:22;5866:1;5793:6;;;5965:22;;;;5838:29;;;;5965:22;;;;5992:2;5964:30;;;5838:29;6056:7;5843:18;5792:29;;;;5838;;;;5791:77;;;;5918:7;;;5969:18;5917:30;6056:7;6061:2;6044:7;;;6056;;;6043:21;;5671:400;3609:41;3599:51;;;;3566:95;3670:26;;;;;-1:-1:-1;3688:7:2;-1:-1:-1;2999:704:2;;;;;;:::o;2286:759:1:-;2379:7;2398:22;2430:14;2490:37;2513:8;2523:3;2490:22;:37::i;:::-;2463:64;;-1:-1:-1;2463:64:1;-1:-1:-1;2541:38:1;;;2537:96;;-1:-1:-1;;2595:27:1;;;;;;2537:96;2643:16;;2687:18;2691:14;2687:1;:18;:::i;:::-;2669:36;;2721:9;2716:298;2740:6;2736:1;:10;2716:298;;;2796:41;2819:8;2829:7;2796:22;:41::i;:::-;2767:70;;-1:-1:-1;2767:70:1;-1:-1:-1;2855:32:1;;;2851:98;;-1:-1:-1;;2907:27:1;;;;;;;;;2851:98;2995:8;2974:18;2978:14;2974:1;:18;:::i;:::-;:29;;;;:::i;:::-;2963:40;;;;:::i;:::-;;-1:-1:-1;2748:3:1;;2716:298;;;-1:-1:-1;3031:7:1;2286:759;-1:-1:-1;;;;;;2286:759:1:o;13785:388:2:-;13873:7;;13921:8;13926:3;13921:2;:8;:::i;:::-;13905:6;:13;:24;13901:78;;;-1:-1:-1;;;654:66:2;-1:-1:-1;13966:1:2;13945:23;;13901:78;13989:22;;14086:31;14100:6;14108:8;:3;14114:2;14108:8;:::i;14086:31::-;14052:65;;;;-1:-1:-1;13785:388:2;-1:-1:-1;;;;;13785:388:2:o;1550:446::-;1640:5;1667:2;1670:3;1667:7;;;;;;;;:::i;:::-;;;;;;;1661:14;:22;1657:93;;-1:-1:-1;1706:1:2;1699:8;;1657:93;1769:2;1772:3;1769:7;;;;;;;;:::i;:::-;;;;;;;1781:4;1763:22;1759:93;;-1:-1:-1;1808:1:2;1801:8;;1759:93;1871:2;1874:3;1871:7;;;;;;;;:::i;:::-;;;;;;;1883:4;1865:22;1861:93;;-1:-1:-1;1910:1:2;1903:8;;1861:93;-1:-1:-1;1971:1:2;1550:446;;;;:::o;13493:136:3:-;13566:6;13598:23;13606:6;13614;12550:28;12566:2;12550:28;12544:35;;12417:178;388:347:46;439:8;449:6;503:3;496:4;488:6;484:17;480:27;470:55;;521:1;518;511:12;470:55;-1:-1:-1;544:20:46;;587:18;576:30;;573:50;;;619:1;616;609:12;573:50;656:4;648:6;644:17;632:29;;708:3;701:4;692:6;684;680:19;676:30;673:39;670:59;;;725:1;722;715:12;740:173;808:20;;-1:-1:-1;;;;;857:31:46;;847:42;;837:70;;903:1;900;893:12;837:70;740:173;;;:::o;918:860::-;1026:6;1034;1042;1050;1058;1066;1119:3;1107:9;1098:7;1094:23;1090:33;1087:53;;;1136:1;1133;1126:12;1087:53;1176:9;1163:23;1205:18;1246:2;1238:6;1235:14;1232:34;;;1262:1;1259;1252:12;1232:34;1301:58;1351:7;1342:6;1331:9;1327:22;1301:58;:::i;:::-;1378:8;;-1:-1:-1;1275:84:46;-1:-1:-1;1466:2:46;1451:18;;1438:32;;-1:-1:-1;1482:16:46;;;1479:36;;;1511:1;1508;1501:12;1479:36;;1550:60;1602:7;1591:8;1580:9;1576:24;1550:60;:::i;:::-;1629:8;;-1:-1:-1;1524:86:46;-1:-1:-1;;1711:2:46;1696:18;;1683:32;;-1:-1:-1;1734:38:46;1768:2;1753:18;;1734:38;:::i;:::-;1724:48;;918:860;;;;;;;;:::o;1991:615::-;2077:6;2085;2138:2;2126:9;2117:7;2113:23;2109:32;2106:52;;;2154:1;2151;2144:12;2106:52;2194:9;2181:23;2223:18;2264:2;2256:6;2253:14;2250:34;;;2280:1;2277;2270:12;2250:34;2318:6;2307:9;2303:22;2293:32;;2363:7;2356:4;2352:2;2348:13;2344:27;2334:55;;2385:1;2382;2375:12;2334:55;2425:2;2412:16;2451:2;2443:6;2440:14;2437:34;;;2467:1;2464;2457:12;2437:34;2520:7;2515:2;2505:6;2502:1;2498:14;2494:2;2490:23;2486:32;2483:45;2480:65;;;2541:1;2538;2531:12;2480:65;2572:2;2564:11;;;;;2594:6;;-1:-1:-1;1991:615:46;;-1:-1:-1;;;;1991:615:46:o;2611:180::-;2670:6;2723:2;2711:9;2702:7;2698:23;2694:32;2691:52;;;2739:1;2736;2729:12;2691:52;-1:-1:-1;2762:23:46;;2611:180;-1:-1:-1;2611:180:46:o;2796:546::-;2906:4;2935:2;2964;2953:9;2946:21;2996:6;2990:13;3039:6;3034:2;3023:9;3019:18;3012:34;3064:1;3074:140;3088:6;3085:1;3082:13;3074:140;;;3183:14;;;3179:23;;3173:30;3149:17;;;3168:2;3145:26;3138:66;3103:10;;3074:140;;;3078:3;3263:1;3258:2;3249:6;3238:9;3234:22;3230:31;3223:42;3333:2;3326;3322:7;3317:2;3309:6;3305:15;3301:29;3290:9;3286:45;3282:54;3274:62;;;;2796:546;;;;:::o;3347:785::-;3446:6;3454;3462;3470;3478;3531:2;3519:9;3510:7;3506:23;3502:32;3499:52;;;3547:1;3544;3537:12;3499:52;3587:9;3574:23;3616:18;3657:2;3649:6;3646:14;3643:34;;;3673:1;3670;3663:12;3643:34;3712:58;3762:7;3753:6;3742:9;3738:22;3712:58;:::i;:::-;3789:8;;-1:-1:-1;3686:84:46;-1:-1:-1;3877:2:46;3862:18;;3849:32;;-1:-1:-1;3893:16:46;;;3890:36;;;3922:1;3919;3912:12;3890:36;;3961:60;4013:7;4002:8;3991:9;3987:24;3961:60;:::i;:::-;3347:785;;;;-1:-1:-1;4040:8:46;4122:2;4107:18;4094:32;;3347:785;-1:-1:-1;;;;3347:785:46:o;4137:186::-;4196:6;4249:2;4237:9;4228:7;4224:23;4220:32;4217:52;;;4265:1;4262;4255:12;4217:52;4288:29;4307:9;4288:29;:::i;4695:394::-;4788:6;4841:2;4829:9;4820:7;4816:23;4812:32;4809:52;;;4857:1;4854;4847:12;4809:52;4897:9;4884:23;4930:18;4922:6;4919:30;4916:50;;;4962:1;4959;4952:12;4916:50;4985:22;;5041:3;5023:16;;;5019:26;5016:46;;;5058:1;5055;5048:12;6764:127;6825:10;6820:3;6816:20;6813:1;6806:31;6856:4;6853:1;6846:15;6880:4;6877:1;6870:15;6896:380;6975:1;6971:12;;;;7018;;;7039:61;;7093:4;7085:6;7081:17;7071:27;;7039:61;7146:2;7138:6;7135:14;7115:18;7112:38;7109:161;;7192:10;7187:3;7183:20;7180:1;7173:31;7227:4;7224:1;7217:15;7255:4;7252:1;7245:15;7109:161;;6896:380;;;:::o;7406:542::-;7507:2;7502:3;7499:11;7496:446;;;7543:1;7567:5;7564:1;7557:16;7611:4;7608:1;7598:18;7681:2;7669:10;7665:19;7662:1;7658:27;7652:4;7648:38;7717:4;7705:10;7702:20;7699:47;;;-1:-1:-1;7740:4:46;7699:47;7795:2;7790:3;7786:12;7783:1;7779:20;7773:4;7769:31;7759:41;;7850:82;7868:2;7861:5;7858:13;7850:82;;;7913:17;;;7894:1;7883:13;7850:82;;;7854:3;;;7496:446;7406:542;;;:::o;8124:1202::-;8246:18;8241:3;8238:27;8235:53;;;8268:18;;:::i;:::-;8297:93;8386:3;8346:38;8378:4;8372:11;8346:38;:::i;:::-;8340:4;8297:93;:::i;:::-;8416:1;8441:2;8436:3;8433:11;8458:1;8453:615;;;;9112:1;9129:3;9126:93;;;-1:-1:-1;9185:19:46;;;9172:33;9126:93;-1:-1:-1;;8081:1:46;8077:11;;;8073:24;8069:29;8059:40;8105:1;8101:11;;;8056:57;9232:78;;8426:894;;8453:615;7353:1;7346:14;;;7390:4;7377:18;;-1:-1:-1;;8489:17:46;;;8589:9;8611:229;8625:7;8622:1;8619:14;8611:229;;;8714:19;;;8701:33;8686:49;;8821:4;8806:20;;;;8774:1;8762:14;;;;8641:12;8611:229;;;8615:3;8868;8859:7;8856:16;8853:159;;;8992:1;8988:6;8982:3;8976;8973:1;8969:11;8965:21;8961:34;8957:39;8944:9;8939:3;8935:19;8922:33;8918:79;8910:6;8903:95;8853:159;;;9055:1;9049:3;9046:1;9042:11;9038:19;9032:4;9025:33;8426:894;;;8124:1202;;;:::o;9640:266::-;9728:6;9723:3;9716:19;9780:6;9773:5;9766:4;9761:3;9757:14;9744:43;-1:-1:-1;9832:1:46;9807:16;;;9825:4;9803:27;;;9796:38;;;;9888:2;9867:15;;;-1:-1:-1;;9863:29:46;9854:39;;;9850:50;;9640:266::o;9911:502::-;10152:2;10141:9;10134:21;10115:4;10178:61;10235:2;10224:9;10220:18;10212:6;10204;10178:61;:::i;:::-;10287:9;10279:6;10275:22;10270:2;10259:9;10255:18;10248:50;10315:49;10357:6;10349;10341;10315:49;:::i;:::-;10307:57;;;10400:6;10395:2;10384:9;10380:18;10373:34;9911:502;;;;;;;;:::o;10418:127::-;10479:10;10474:3;10470:20;10467:1;10460:31;10510:4;10507:1;10500:15;10534:4;10531:1;10524:15;10550:168;10623:9;;;10654;;10671:15;;;10665:22;;10651:37;10641:71;;10692:18;;:::i;11075:127::-;11136:10;11131:3;11127:20;11124:1;11117:31;11167:4;11164:1;11157:15;11191:4;11188:1;11181:15;11207:125;11272:9;;;11293:10;;;11290:36;;;11306:18;;:::i;11661:343::-;11863:2;11845:21;;;11902:2;11882:18;;;11875:30;-1:-1:-1;;;11936:2:46;11921:18;;11914:49;11995:2;11980:18;;11661:343::o;12720:286::-;12778:6;12831:2;12819:9;12810:7;12806:23;12802:32;12799:52;;;12847:1;12844;12837:12;12799:52;12873:23;;-1:-1:-1;;;;;;12925:32:46;;12915:43;;12905:71;;12972:1;12969;12962:12;13011:281;13069:6;13122:2;13110:9;13101:7;13097:23;13093:32;13090:52;;;13138:1;13135;13128:12;13090:52;13164:23;;-1:-1:-1;;;;;;13216:27:46;;13206:38;;13196:66;;13258:1;13255;13248:12;13297:521;13374:4;13380:6;13440:11;13427:25;13534:2;13530:7;13519:8;13503:14;13499:29;13495:43;13475:18;13471:68;13461:96;;13553:1;13550;13543:12;13461:96;13580:33;;13632:20;;;-1:-1:-1;13675:18:46;13664:30;;13661:50;;;13707:1;13704;13697:12;13661:50;13740:4;13728:17;;-1:-1:-1;13771:14:46;13767:27;;;13757:38;;13754:58;;;13808:1;13805;13798:12;15641:459;15882:6;15871:9;15864:25;15925:6;15920:2;15909:9;15905:18;15898:34;15968:3;15963:2;15952:9;15948:18;15941:31;15845:4;15989:62;16046:3;16035:9;16031:19;16023:6;16015;15989:62;:::i;:::-;15981:70;;16087:6;16082:2;16071:9;16067:18;16060:34;15641:459;;;;;;;;:::o;16105:277::-;16172:6;16225:2;16213:9;16204:7;16200:23;16196:32;16193:52;;;16241:1;16238;16231:12;16193:52;16273:9;16267:16;16326:5;16319:13;16312:21;16305:5;16302:32;16292:60;;16348:1;16345;16338:12;17444:128;17511:9;;;17532:11;;;17529:37;;;17546:18;;:::i;18831:886::-;-1:-1:-1;;;;;;19229:15:46;;;19217:28;;-1:-1:-1;;;;;;19274:28:46;;19270:1;19261:11;;19254:49;19160:3;;19346:6;19338;19334:1;19325:11;;19312:41;19381:6;19376:3;19372:16;19415:1;19411:2;19407:10;19437:1;19433:2;19426:13;19473:6;19465;19461:2;19448:32;;19507:6;19503:2;19499:15;19489:25;;19541:1;19537:2;19533:10;19563:1;19559:2;19552:13;19599:6;19591;19587:2;19574:32;-1:-1:-1;19668:15:46;;19625;;;;19664:1;19656:10;;19649:35;;;;-1:-1:-1;;19708:2:46;19700:11;;;-1:-1:-1;;;;;;;18831:886:46:o;21864:375::-;21982:12;;22030:4;22019:16;;22013:23;-1:-1:-1;;22104:11:46;;;;21982:12;22013:23;22138:2;22127:14;;22124:109;;;22220:2;22214;22204:6;22200:2;22196:15;22193:1;22189:23;22185:32;22181:2;22177:41;22173:50;22164:59;;22124:109;;;;21864:375;;;:::o;22244:148::-;22332:4;22311:12;;;22325;;;22307:31;;22350:13;;22347:39;;;22366:18;;:::i","linkReferences":{}},"methodIdentifiers":{"DEPOSIT_AMOUNT()":"ec6925a7","LIGHT_CLIENT()":"e613ae00","SYSTEM_CALLER()":"d761753e","acceptOwnership()":"79ba5097","batchWithdraw(bytes32[])":"59c19cee","deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"dd95c7c6","depositScript()":"b93780f6","getWithdrawalCount()":"781952a8","initialize(bytes,bytes,uint256,address)":"4507fc69","initialized()":"158ef93e","operator()":"570ca735","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","requiredSigsCount()":"43e31687","scriptSuffix()":"87f8bf56","setDepositScript(bytes,bytes,uint256)":"9f963f59","setOperator(address)":"b3ab15fb","spentWtxIds(bytes32)":"5e0e5b3e","transferOwnership(address)":"f2fde38b","withdraw(bytes32)":"8e19899e","withdrawalAddrs(uint256)":"d1c44456"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wtxId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositScript\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptSuffix\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"DepositScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOperator\",\"type\":\"address\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT\",\"outputs\":[{\"internalType\":\"contract BitcoinLightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"bitcoin_addresses\",\"type\":\"bytes32[]\"}],\"name\":\"batchWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.DepositParams\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredSigsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptSuffix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"setDepositScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"spentWtxIds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawalAddrs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"kind\":\"dev\",\"methods\":{\"batchWithdraw(bytes32[])\":{\"details\":\"Takes in multiple Bitcoin addresses as recipient addresses should be unique\",\"params\":{\"bitcoin_addresses\":\"The Bitcoin addresses of the receivers\"}},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"p\":\"The deposit parameters that contains the info of the deposit transaction on Bitcoin\"}},\"getWithdrawalCount()\":{\"returns\":{\"_0\":\"The count of withdrawals happened so far\"}},\"initialize(bytes,bytes,uint256,address)\":{\"params\":{\"_depositScript\":\"The deposit script expected in the witness field for all L1 deposits\",\"_requiredSigsCount\":\"The number of signatures that is contained in the deposit script\",\"_scriptSuffix\":\"The suffix of the deposit script that follows the receiver address\"}},\"setDepositScript(bytes,bytes,uint256)\":{\"details\":\"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver\",\"params\":{\"_depositScript\":\"The new deposit script\",\"_requiredSigsCount\":\"The number of signatures that are needed for deposit transaction\",\"_scriptSuffix\":\"The part of the deposit script that succeeds the receiver address\"}},\"setOperator(address)\":{\"params\":{\"_operator\":\"Address of the privileged operator\"}},\"withdraw(bytes32)\":{\"params\":{\"bitcoin_address\":\"The Bitcoin address of the receiver\"}}},\"title\":\"Bridge contract of Clementine\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batchWithdraw(bytes32[])\":{\"notice\":\"Batch version of `withdraw` that can accept multiple cBTC\"},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver\"},\"initialize(bytes,bytes,uint256,address)\":{\"notice\":\"Initializes the bridge contract and sets the deposit script\"},\"setDepositScript(bytes,bytes,uint256)\":{\"notice\":\"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness\"},\"setOperator(address)\":{\"notice\":\"Sets the operator address that can process user deposits\"},\"withdraw(bytes32)\":{\"notice\":\"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/Ownable.sol\":{\"keccak256\":\"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee\",\"dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94\"]},\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf\",\"dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e\",\"dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV\"]},\"src/Bridge.sol\":{\"keccak256\":\"0xa6ebf14954616ee14e2cb8bdc22ccb7c1fd25e949334a4fc7fcf21b3edf4cb94\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25ee56bb6481cd86166fd7e7f27e215e05141fe99776b8e623c69dc910b4e153\",\"dweb:/ipfs/QmXWtzyx9AFiU85cKGBLpXgNW7QWg3oY5cN1ak8K8kzyhD\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"wtxId","type":"bytes32","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"bytes","name":"depositScript","type":"bytes","indexed":false},{"internalType":"bytes","name":"scriptSuffix","type":"bytes","indexed":false},{"internalType":"uint256","name":"requiredSigsCount","type":"uint256","indexed":false}],"type":"event","name":"DepositScriptUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOperator","type":"address","indexed":false},{"internalType":"address","name":"newOperator","type":"address","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false}],"type":"event","name":"OwnershipTransferRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Withdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIGHT_CLIENT","outputs":[{"internalType":"contract BitcoinLightClient","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"bytes32[]","name":"bitcoin_addresses","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"batchWithdraw"},{"inputs":[{"internalType":"struct Bridge.DepositParams","name":"p","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"depositScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWithdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"requiredSigsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptSuffix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositScript"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"spentWtxIds","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalAddrs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"batchWithdraw(bytes32[])":{"details":"Takes in multiple Bitcoin addresses as recipient addresses should be unique","params":{"bitcoin_addresses":"The Bitcoin addresses of the receivers"}},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"p":"The deposit parameters that contains the info of the deposit transaction on Bitcoin"}},"getWithdrawalCount()":{"returns":{"_0":"The count of withdrawals happened so far"}},"initialize(bytes,bytes,uint256,address)":{"params":{"_depositScript":"The deposit script expected in the witness field for all L1 deposits","_requiredSigsCount":"The number of signatures that is contained in the deposit script","_scriptSuffix":"The suffix of the deposit script that follows the receiver address"}},"setDepositScript(bytes,bytes,uint256)":{"details":"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver","params":{"_depositScript":"The new deposit script","_requiredSigsCount":"The number of signatures that are needed for deposit transaction","_scriptSuffix":"The part of the deposit script that succeeds the receiver address"}},"setOperator(address)":{"params":{"_operator":"Address of the privileged operator"}},"withdraw(bytes32)":{"params":{"bitcoin_address":"The Bitcoin address of the receiver"}}},"version":1},"userdoc":{"kind":"user","methods":{"batchWithdraw(bytes32[])":{"notice":"Batch version of `withdraw` that can accept multiple cBTC"},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver"},"initialize(bytes,bytes,uint256,address)":{"notice":"Initializes the bridge contract and sets the deposit script"},"setDepositScript(bytes,bytes,uint256)":{"notice":"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness"},"setOperator(address)":{"notice":"Sets the operator address that can process user deposits"},"withdraw(bytes32)":{"notice":"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator "}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/Ownable.sol":{"keccak256":"0xb748492fa1760e452053648ce613090579d01d6ccc16a9eacb4b4f41eadadd07","urls":["bzz-raw://872bf67baa2125e66e79277bd5f82535202b2adaffda589897b2ac54a79cafee","dweb:/ipfs/QmU3LtS45VQjCUosNHHnUCcSATCfSZrDtcoi6GNkMY2M94"],"license":"MIT"},"lib/WitnessUtils.sol":{"keccak256":"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a","urls":["bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf","dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K"],"license":"LGPL-3.0-or-later"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x5af38ff9020d36fa48534386ea52a30465934616ee213ac672779456f7a79b1f","urls":["bzz-raw://2935f30ea2764362922818fe26868463350359e32a87ebd7acc979701e663f9e","dweb:/ipfs/QmR3Z7fSDq9m1bjZsvVrgzkeMGawp6YEA4RwNssx79ZMHV"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0xa6ebf14954616ee14e2cb8bdc22ccb7c1fd25e949334a4fc7fcf21b3edf4cb94","urls":["bzz-raw://25ee56bb6481cd86166fd7e7f27e215e05141fe99776b8e623c69dc910b4e153","dweb:/ipfs/QmXWtzyx9AFiU85cKGBLpXgNW7QWg3oY5cN1ak8K8kzyhD"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":42} \ No newline at end of file +{"abi":[{"type":"function","name":"DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"LIGHT_CLIENT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract BitcoinLightClient"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchWithdraw","inputs":[{"name":"bitcoin_addresses","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposit","inputs":[{"name":"p","type":"tuple","internalType":"struct Bridge.DepositParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositScript","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requiredSigsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"scriptSuffix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setDepositScript","inputs":[{"name":"_depositScript","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_requiredSigsCount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"spentWtxIds","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdraw","inputs":[{"name":"bitcoin_address","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawalAddrs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Deposit","inputs":[{"name":"wtxId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DepositScriptUpdate","inputs":[{"name":"depositScript","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"scriptSuffix","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"requiredSigsCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"oldOperator","type":"address","indexed":false,"internalType":"address"},{"name":"newOperator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"name":"bitcoin_address","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b506080516129e061003d600039600081816113e60152818161140f015261155501526129e06000f3fe6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033","sourceMap":"484:8830:42:-:0;;;1171:4:31;1128:48;;484:8830:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033","sourceMap":"484:8830:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1089:23;;;;;;;;;;-1:-1:-1;1089:23:42;;;;;;;;;;;179:14:53;;172:22;154:41;;142:2;127:18;1089:23:42;;;;;;;;2340:810;;;;;;;;;;-1:-1:-1;2340:810:42;;;;;:::i;:::-;;:::i;:::-;;1204:32;;;;;;;;;;;;;;;;;;;1494:25:53;;;1482:2;1467:18;1204:32:42;1348:177:53;4158:214:31;;;;;;:::i;:::-;;:::i;3705:134::-;;;;;;;;;;;;;:::i;1175:23:42:-;;;;;;;;;;-1:-1:-1;1175:23:42;;;;;;;-1:-1:-1;;;;;1175:23:42;;;;;;-1:-1:-1;;;;;3186:32:53;;;3168:51;;3156:2;3141:18;1175:23:42;3022:203:53;7361:440:42;;;;;;:::i;:::-;;:::i;1310:43::-;;;;;;;;;;-1:-1:-1;1310:43:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;3155:101:29;;;;;;;;;;;;;:::i;7864:108:42:-;;;;;;;;;;-1:-1:-1;7943:15:42;:22;7864:108;;2774:229:28;;;;;;;;;;;;;:::i;1274:25:42:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2441:144:29:-;;;;;;;;;;;;;:::i;6815:301:42:-;;;;;;:::i;:::-;;:::i;3643:505::-;;;;;;;;;;-1:-1:-1;3643:505:42;;;;;:::i;:::-;;:::i;1819:58:31:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:31;;;;;8115:147:42;;;;;;;;;;-1:-1:-1;8115:147:42;;;;;:::i;:::-;;:::i;1242:26::-;;;;;;;;;;;;;:::i;1359:32::-;;;;;;;;;;-1:-1:-1;1359:32:42;;;;;:::i;:::-;;:::i;991:91::-;;;;;;;;;;;;1039:42;991:91;;4376:2185;;;;;;;;;;-1:-1:-1;4376:2185:42;;;;;:::i;:::-;;:::i;1680:168:28:-;;;;;;;;;;;;;:::i;864:121:42:-;;;;;;;;;;;;-1:-1:-1;;;;;864:121:42;;1118:51;;;;;;;;;;;;1159:10;1118:51;;2041:247:28;;;;;;;;;;-1:-1:-1;2041:247:28;;;;;:::i;:::-;;:::i;2340:810:42:-;1764:10;1039:42;1764:27;1756:71;;;;-1:-1:-1;;;1756:71:42;;6224:2:53;1756:71:42;;;6206:21:53;6263:2;6243:18;;;6236:30;6302:33;6282:18;;;6275:61;6353:18;;1756:71:42;;;;;;;;;2488:11:::1;::::0;::::1;;2487:12;2479:56;;;::::0;-1:-1:-1;;;2479:56:42;;6584:2:53;2479:56:42::1;::::0;::::1;6566:21:53::0;6623:2;6603:18;;;6596:30;6662:33;6642:18;;;6635:61;6713:18;;2479:56:42::1;6382:355:53::0;2479:56:42::1;2553:18;2575:1;2553:23:::0;2545:62:::1;;;::::0;-1:-1:-1;;;2545:62:42;;6944:2:53;2545:62:42::1;::::0;::::1;6926:21:53::0;6983:2;6963:18;;;6956:30;7022:28;7002:18;;;6995:56;7068:18;;2545:62:42::1;6742:350:53::0;2545:62:42::1;2650:1;2625:26:::0;;;2617:69:::1;;;::::0;-1:-1:-1;;;2617:69:42;;7299:2:53;2617:69:42::1;::::0;::::1;7281:21:53::0;7338:2;7318:18;;;7311:30;7377:32;7357:18;;;7350:60;7427:18;;2617:69:42::1;7097:354:53::0;2617:69:42::1;2697:11;:18:::0;;-1:-1:-1;;2697:18:42::1;2711:4;2697:18;::::0;;2725:13:::1;:30;2741:14:::0;;2725:13;:30:::1;:::i;:::-;-1:-1:-1::0;2765:12:42::1;:28;2780:13:::0;;2765:12;:28:::1;:::i;:::-;-1:-1:-1::0;2803:17:42::1;:38:::0;;;2976:8:::1;:24:::0;;-1:-1:-1;;;;;;2976:24:42::1;::::0;::::1;::::0;;3016:42:::1;::::0;;10103:34:53;;;1039:42:42::1;10168:2:53::0;10153:18;;10146:43;3016:42:42::1;::::0;10038:18:53;3016:42:42::1;;;;;;;3073:70;3093:14;;3109:13;;3124:18;3073:70;;;;;;;;;;:::i;:::-;;;;;;;;2340:810:::0;;;;;:::o;4158:214:31:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;3705:134::-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:31;:::o;7361:440:42:-;7470:41;7487:17;1159:10;7470:41;:::i;:::-;7457:9;:54;7449:90;;;;-1:-1:-1;;;7449:90:42;;11485:2:53;7449:90:42;;;11467:21:53;11524:2;11504:18;;;11497:30;-1:-1:-1;;;11543:18:53;;;11536:53;11606:18;;7449:90:42;11283:347:53;7449:90:42;7565:15;:22;7549:13;7597:198;7614:28;;;7597:198;;;7663:15;7684:17;;7702:1;7684:20;;;;;;;:::i;:::-;7663:42;;;;;;;-1:-1:-1;7663:42:42;;;7684:20;7663:42;;;;7684:20;;;;;;;;;7663:42;;;;;-1:-1:-1;7724:60:42;7735:17;;7753:1;7735:20;;;;;;;:::i;:::-;;;;;;;7765:1;7757:5;:9;;;;:::i;:::-;7724:60;;;12099:25:53;;;12155:2;12140:18;;12133:34;;;;7768:15:42;12183:18:53;;;12176:34;12087:2;12072:18;7724:60:42;;;;;;;7644:3;;7597:198;;;;7439:362;7361:440;;:::o;3155:101:29:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;2774:229:28:-;966:10:32;;2869:14:28;:12;:14::i;:::-;-1:-1:-1;;;;;2869:24:28;;2865:96;;2916:34;;-1:-1:-1;;;2916:34:28;;-1:-1:-1;;;;;3186:32:53;;2916:34:28;;;3168:51:53;3141:18;;2916:34:28;3022:203:53;2865:96:28;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;1274:25:42:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2441:144:29:-;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:29;;2441:144;-1:-1:-1;;2441:144:29:o;6815:301:42:-;1159:10;6893:9;:27;6885:63;;;;-1:-1:-1;;;6885:63:42;;11485:2:53;6885:63:42;;;11467:21:53;11524:2;11504:18;;;11497:30;-1:-1:-1;;;11543:18:53;;;11536:53;11606:18;;6885:63:42;11283:347:53;6885:63:42;6974:15;:22;;7006:37;;;;;-1:-1:-1;7006:37:42;;;;;;;;;;7058:51;;;12099:25:53;;;12155:2;12140:18;;12133:34;;;7093:15:42;12183:18:53;;;12176:34;7058:51:42;;;;;;;12087:2:53;7058:51:42;;;6875:241;6815:301;:::o;3643:505::-;2334:13:29;:11;:13::i;:::-;3795:18:42::1;3817:1;3795:23:::0;3787:62:::1;;;::::0;-1:-1:-1;;;3787:62:42;;6944:2:53;3787:62:42::1;::::0;::::1;6926:21:53::0;6983:2;6963:18;;;6956:30;7022:28;7002:18;;;6995:56;7068:18;;3787:62:42::1;6742:350:53::0;3787:62:42::1;3892:1;3867:26:::0;;;3859:69:::1;;;::::0;-1:-1:-1;;;3859:69:42;;7299:2:53;3859:69:42::1;::::0;::::1;7281:21:53::0;7338:2;7318:18;;;7311:30;7377:32;7357:18;;;7350:60;7427:18;;3859:69:42::1;7097:354:53::0;3859:69:42::1;3939:13;:30;3955:14:::0;;3939:13;:30:::1;:::i;:::-;-1:-1:-1::0;3979:12:42::1;:28;3994:13:::0;;3979:12;:28:::1;:::i;:::-;-1:-1:-1::0;4017:17:42::1;:38:::0;;;4071:70:::1;::::0;::::1;::::0;::::1;::::0;4091:14;;;;4107:13;;;;4037:18;;4071:70:::1;:::i;8115:147::-:0;2334:13:29;:11;:13::i;:::-;8184:8:42::1;:20:::0;;-1:-1:-1;;;;;;8184:20:42::1;;-1:-1:-1::0;;;;;8184:20:42;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;8219:36:::1;::::0;;8235:8;;;::::1;;10103:34:53::0;;10168:2;10153:18;;10146:43;;;;8219:36:42::1;::::0;10038:18:53;8219:36:42::1;;;;;;;8115:147:::0;:::o;1242:26::-;;;;;;;:::i;1359:32::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1359:32:42;:::o;4376:2185::-;1907:8;;;;;-1:-1:-1;;;;;1907:8:42;1893:10;:22;1885:61;;;;-1:-1:-1;;;1885:61:42;;12423:2:53;1885:61:42;;;12405:21:53;12462:2;12442:18;;;12435:30;12501:28;12481:18;;;12474:56;12547:18;;1885:61:42;12221:350:53;1885:61:42;4802:13:::1;4818:84;4846:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4857:6;::::0;;;::::1;::::0;::::1;;:::i;:::-;4865:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;4872:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4880:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4891:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4818:27;:84::i;:::-;4921:18;::::0;;;:11:::1;:18;::::0;;;;;4802:100;;-1:-1:-1;4921:18:42::1;;4920:19;4912:51;;;::::0;-1:-1:-1;;;4912:51:42;;13881:2:53;4912:51:42::1;::::0;::::1;13863:21:53::0;13920:2;13900:18;;;13893:30;-1:-1:-1;;;13939:18:53;;;13932:49;13998:18;;4912:51:42::1;13679:343:53::0;4912:51:42::1;4973:18;::::0;;;:11:::1;:18;::::0;;;;;;:25;;-1:-1:-1;;4973:25:42::1;4994:4;4973:25;::::0;;5017:27:::1;::::0;5038:5:::1;::::0;;::::1;:1:::0;:5:::1;:::i;:::-;5017:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5017:20:42::1;::::0;-1:-1:-1;;;5017:27:42:i:1;:::-;5009:69;;;::::0;-1:-1:-1;;;5009:69:42;;14229:2:53;5009:69:42::1;::::0;::::1;14211:21:53::0;14268:2;14248:18;;;14241:30;14307:31;14287:18;;;14280:59;14356:18;;5009:69:42::1;14027:353:53::0;5009:69:42::1;5096:29;5118:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;5096:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5096:21:42::1;::::0;-1:-1:-1;;;5096:29:42:i:1;:::-;5088:72;;;::::0;-1:-1:-1;;;5088:72:42;;14587:2:53;5088:72:42::1;::::0;::::1;14569:21:53::0;14626:2;14606:18;;;14599:30;14665:32;14645:18;;;14638:60;14715:18;;5088:72:42::1;14385:354:53::0;5088:72:42::1;5182:13;5199:27;5220:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;5199:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5199:20:42::1;::::0;-1:-1:-1;;;5199:27:42:i:1;:::-;5179:47;;;5244:5;5253:1;5244:10;5236:45;;;::::0;-1:-1:-1;;;5236:45:42;;14946:2:53;5236:45:42::1;::::0;::::1;14928:21:53::0;14985:2;14965:18;;;14958:30;-1:-1:-1;;;15004:18:53;;;14997:52;15066:18;;5236:45:42::1;14744:346:53::0;5236:45:42::1;5350:46;5379:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5350:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5390:5:42;;-1:-1:-1;5350:28:42::1;::::0;-1:-1:-1;;5350:46:42:i:1;:::-;5342:92;;;::::0;-1:-1:-1;;;5342:92:42;;15297:2:53;5342:92:42::1;::::0;::::1;15279:21:53::0;15336:2;15316:18;;;15309:30;15375:34;15355:18;;;15348:62;-1:-1:-1;;;15426:18:53;;;15419:31;15467:19;;5342:92:42::1;15095:397:53::0;5342:92:42::1;-1:-1:-1::0;;;;;5453:28:42::1;5482:14;::::0;::::1;;5498:5:::0;5505:20:::1;;::::0;::::1;5482:1:::0;5505:20:::1;:::i;:::-;5527:1;:7;;;5453:82;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5445:122;;;::::0;-1:-1:-1;;;5445:122:42;;16445:2:53;5445:122:42::1;::::0;::::1;16427:21:53::0;16484:2;16464:18;;;16457:30;16523:29;16503:18;;;16496:57;16570:18;;5445:122:42::1;16243:351:53::0;5445:122:42::1;5578:21;5602:48;5637:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5602:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5602:48:42;-1:-1:-1;5602:34:42::1;::::0;-1:-1:-1;;5602:48:42:i:1;:::-;5578:72;;5663:15;5682:30;5703:8;5682:20;:30::i;:::-;5660:52;;;5741:17;;5761:1;5741:21;;;;:::i;:::-;5730:7;:32;5722:66;;;::::0;-1:-1:-1;;;5722:66:42;;16801:2:53;5722:66:42::1;::::0;::::1;16783:21:53::0;16840:2;16820:18;;;16813:30;-1:-1:-1;;;16859:18:53;;;16852:51;16920:18;;5722:66:42::1;16599:345:53::0;5722:66:42::1;5850:19;5872:64;5908:8;5918:17;;5872:35;:64::i;:::-;5850:86;;5946:12;5961:13;:20;;;;;:::i;:::-;::::0;-1:-1:-1;5991:27:42::1;::::0;-1:-1:-1;6021:21:42::1;:6:::0;5991:27;5961:20;6021:12:::1;:21::i;:::-;5991:51;;6060:43;6073:14;6089:13;6060:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:43::i;:::-;6052:78;;;::::0;-1:-1:-1;;;6052:78:42;;17151:2:53;6052:78:42::1;::::0;::::1;17133:21:53::0;17190:2;17170:18;;;17163:30;-1:-1:-1;;;17209:18:53;;;17202:52;17271:18;;6052:78:42::1;16949:346:53::0;6052:78:42::1;6140:20;6163:52;6176:9;:4:::0;6183:2:::1;6176:9;:::i;:::-;6204;:4:::0;6211:2:::1;6204:9;:::i;:::-;6187:6;:13;:27;;;;:::i;:::-;6163:6:::0;;:52;:12:::1;:52::i;:::-;6140:75;;6257:35;6270:7;6279:12;6257:35;;;;;:::i;:::-;6249:69;;;::::0;-1:-1:-1;;;6249:69:42;;17635:2:53;6249:69:42::1;::::0;::::1;17617:21:53::0;17674:2;17654:18;;;17647:30;-1:-1:-1;;;17693:18:53;;;17686:51;17754:18;;6249:69:42::1;17433:345:53::0;6249:69:42::1;6329:17;6349:31;6373:6;6349:23;:31::i;:::-;6396:42;::::0;;17985:25:53;;;-1:-1:-1;;;;;18046:32:53;;18041:2;18026:18;;18019:60;6422:15:42::1;18095:18:53::0;;;18088:34;6396:42:42;;18046:32:53;;-1:-1:-1;6396:42:42::1;::::0;;;;;17973:2:53;6396:42:42;;::::1;6450:12;6468:9;-1:-1:-1::0;;;;;6468:14:42::1;1159:10;6468:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6449:60;;;6527:7;6519:35;;;::::0;-1:-1:-1;;;6519:35:42;;18545:2:53;6519:35:42::1;::::0;::::1;18527:21:53::0;18584:2;18564:18;;;18557:30;-1:-1:-1;;;18603:18:53;;;18596:45;18658:18;;6519:35:42::1;18343:339:53::0;6519:35:42::1;4455:2106;;;;;;;;;;4376:2185:::0;:::o;1680:168:28:-;1733:7;;1318:27;1784:25;1187:174;2041:247;2334:13:29;:11;:13::i;:::-;1318:27:28;2197:26;;-1:-1:-1;;;;;;2197:26:28::1;-1:-1:-1::0;;;;;2197:26:28;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;2238:43:28::1;;;;;;;;;;;2120:168;2041:247:::0;:::o;4599:312:31:-;4679:4;-1:-1:-1;;;;;4688:6:31;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:31;:32;-1:-1:-1;;;;;;;;;;;2035:53:35;-1:-1:-1;;;;;2035:53:35;;1957:138;4749:32:31;-1:-1:-1;;;;;4749:42:31;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:31;;;;;;;;;;;9246:66:42;2334:13:29;:11;:13::i;6052:538:31:-;6169:17;-1:-1:-1;;;;;6151:50:31;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:31;;;;;;;;-1:-1:-1;;6151:52:31;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:31;;-1:-1:-1;;;;;3186:32:53;;6513:60:31;;;3168:51:53;3141:18;;6513:60:31;3022:203:53;6147:437:31;-1:-1:-1;;;;;;;;;;;6245:40:31;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:31;;;;;1494:25:53;;;1467:18;;6312:34:31;1348:177:53;6241:120:31;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:31;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:31;;;;;;;;;;;2658:162:29;966:10:32;2717:7:29;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:29;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:29;;966:10:32;2763:40:29;;;3168:51:53;3141:18;;2763:40:29;3022:203:53;2472:222:28;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:28;;;2653:34;2678:8;2653:24;:34::i;463:320:0:-;675:7;701:75;718:7;727:4;733:3;;738:4;;744:7;;753:8;701:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:73;:75::i;:::-;694:82;463:320;-1:-1:-1;;;;;;;;;;463:320:0:o;27793:991:1:-;27856:4;27872:22;27904:13;27954:17;27966:4;27954:11;:17::i;:::-;27928:43;;-1:-1:-1;27928:43:1;-1:-1:-1;28050:10:1;;;:43;;;-1:-1:-1;;28064:14:1;:29;28050:43;28046:86;;;-1:-1:-1;28116:5:1;;27793:991;-1:-1:-1;;;27793:991:1:o;28046:86::-;28142:15;28160:18;28164:14;28160:1;:18;:::i;:::-;28142:36;;28194:9;28189:492;28213:5;28209:1;:9;28189:492;;;28312:4;:11;28301:7;:22;28297:73;;-1:-1:-1;28350:5:1;;27793:991;-1:-1:-1;;;;;27793:991:1:o;28297:73::-;28445:16;28464:37;28487:4;28493:7;28464:22;:37::i;:::-;28445:56;;-1:-1:-1;;28519:8:1;:23;28515:74;;-1:-1:-1;28569:5:1;;27793:991;-1:-1:-1;;;;;;27793:991:1:o;28515:74::-;28651:19;28662:8;28651:19;;:::i;:::-;;-1:-1:-1;;28220:3:1;;28189:492;;;-1:-1:-1;28766:11:1;;28755:22;;;;;-1:-1:-1;;;27793:991:1:o;29056:1004::-;29121:4;29137:22;29169:14;29221:18;29233:5;29221:11;:18::i;:::-;29194:45;;-1:-1:-1;29194:45:1;-1:-1:-1;29319:11:1;;;:44;;;-1:-1:-1;;29334:14:1;:29;29319:44;29315:87;;;-1:-1:-1;29386:5:1;;29056:1004;-1:-1:-1;;;29056:1004:1:o;29315:87::-;29412:15;29430:18;29434:14;29430:1;:18;:::i;:::-;29412:36;;29464:9;29459:497;29483:6;29479:1;:10;29459:497;;;29583:5;:12;29572:7;:23;29568:74;;-1:-1:-1;29622:5:1;;29056:1004;-1:-1:-1;;;;;29056:1004:1:o;29568:74::-;29766:16;29785:39;29809:5;29816:7;29785:23;:39::i;:::-;29766:58;;-1:-1:-1;;29842:8:1;:23;29838:74;;-1:-1:-1;29892:5:1;;29056:1004;-1:-1:-1;;;;;;29056:1004:1:o;29838:74::-;29926:19;29937:8;29926:19;;:::i;:::-;;-1:-1:-1;;29491:3:1;;29459:497;;2414:123;2475:7;2484;2510:20;2524:2;2528:1;2510:13;:20::i;:::-;2503:27;;;;2414:123;;;:::o;1092:871:0:-;1179:4;1254:6;1264:1;1254:11;1250:54;;-1:-1:-1;1288:5:0;1281:12;;1250:54;1314:15;1349:9;1344:512;1368:6;1364:1;:10;1344:512;;;1468:8;:15;1457:7;:26;1453:77;;1510:5;1503:12;;;;;;1453:77;1605:16;1624:43;1649:8;1659:7;1624:24;:43::i;:::-;1605:62;;-1:-1:-1;;1685:8:0;:32;1681:83;;1744:5;1737:12;;;;;;;1681:83;1826:19;1837:8;1826:19;;:::i;:::-;;-1:-1:-1;;1376:3:0;;1344:512;;;-1:-1:-1;1941:15:0;;1930:26;;-1:-1:-1;1092:871:0;;;;;:::o;3428:579::-;3521:12;3545;3571:15;3606:10;3601:221;3627:6;3622:2;:11;3601:221;;;3663:43;3688:8;3698:7;3663:24;:43::i;:::-;3656:50;;-1:-1:-1;;3728:4:0;:28;3720:62;;;;-1:-1:-1;;;3720:62:0;;19968:2:53;3720:62:0;;;19950:21:53;20007:2;19987:18;;;19980:30;-1:-1:-1;;;20026:18:53;;;20019:51;20087:18;;3720:62:0;19766:345:53;3720:62:0;3796:15;3807:4;3796:15;;:::i;:::-;;-1:-1:-1;3635:5:0;;3601:221;;;;3839:43;3864:8;3874:7;3839:24;:43::i;:::-;3832:50;;-1:-1:-1;;3900:4:0;:28;3892:62;;;;-1:-1:-1;;;3892:62:0;;19968:2:53;3892:62:0;;;19950:21:53;20007:2;19987:18;;;19980:30;-1:-1:-1;;;20026:18:53;;;20019:51;20087:18;;3892:62:0;19766:345:53;3892:62:0;3971:29;:8;3986:7;3995:4;3971:14;:29::i;:::-;3964:36;3428:579;-1:-1:-1;;;;;3428:579:0:o;4368:974::-;4462:12;4486:22;4518:15;4580:30;4601:8;4580:20;:30::i;:::-;4552:58;;-1:-1:-1;4552:58:0;-1:-1:-1;4628:38:0;;;4620:85;;;;-1:-1:-1;;;4620:85:0;;20318:2:53;4620:85:0;;;20300:21:53;20357:2;20337:18;;;20330:30;20396:34;20376:18;;;20369:62;-1:-1:-1;;;20447:18:53;;;20440:32;20489:19;;4620:85:0;20116:398:53;4620:85:0;4732:7;4723:6;:16;4715:45;;;;-1:-1:-1;;;4715:45:0;;20721:2:53;4715:45:0;;;20703:21:53;20760:2;20740:18;;;20733:30;-1:-1:-1;;;20779:18:53;;;20772:46;20835:18;;4715:45:0;20519:340:53;4715:45:0;4771:16;;4819:18;4823:14;4819:1;:18;:::i;:::-;4801:36;;4853:9;4848:263;4872:6;4868:1;:10;4848:263;;;4928:41;4951:8;4961:7;4928:22;:41::i;:::-;4899:70;;-1:-1:-1;4899:70:0;-1:-1:-1;4991:32:0;;;4983:63;;;;-1:-1:-1;;;4983:63:0;;21066:2:53;4983:63:0;;;21048:21:53;21105:2;21085:18;;;21078:30;-1:-1:-1;;;21124:18:53;;;21117:48;21182:18;;4983:63:0;20864:342:53;4983:63:0;5092:8;5071:18;5075:14;5071:1;:18;:::i;:::-;:29;;;;:::i;:::-;5060:40;;;;:::i;:::-;;-1:-1:-1;4880:3:0;;4848:263;;;;5150:41;5173:8;5183:7;5150:22;:41::i;:::-;5121:70;;-1:-1:-1;5121:70:0;-1:-1:-1;5209:32:0;;;5201:63;;;;-1:-1:-1;;;5201:63:0;;21066:2:53;5201:63:0;;;21048:21:53;21105:2;21085:18;;;21078:30;-1:-1:-1;;;21124:18:53;;;21117:48;21182:18;;5201:63:0;20864:342:53;5201:63:0;5281:54;5296:7;5305:25;5316:14;5305:8;:25;:::i;:::-;:29;;5333:1;5305:29;:::i;:::-;5281:8;;:54;:14;:54::i;:::-;5274:61;4368:974;-1:-1:-1;;;;;;;4368:974:0:o;10344:924:2:-;10431:16;10463:7;10474:1;10463:12;10459:55;;-1:-1:-1;10491:12:2;;;;;;;;;-1:-1:-1;10491:12:2;;;;10459:55;10523:9;10535:16;10544:7;10535:6;:16;:::i;:::-;10523:28;;10576:6;10569:4;:13;:38;;;;;10603:4;10586:6;:13;:21;;10569:38;10561:70;;;;-1:-1:-1;;;10561:70:2;;21413:2:53;10561:70:2;;;21395:21:53;21452:2;21432:18;;;21425:30;-1:-1:-1;;;21471:18:53;;;21464:49;21530:18;;10561:70:2;21211:343:53;10561:70:2;10768:4;10762:11;10755:18;;10817:7;10812:2;10807:3;10803:12;10799:26;10793:4;10786:40;10851:7;10846:3;10839:20;10978:6;10970;10966:19;10961:3;10957:29;11054:6;11049:2;11041:6;11037:15;11033:28;11098:7;11093:3;11089:17;11000:252;11129:3;11124;11121:12;11000:252;;;11233:3;11227:10;11220:4;11215:3;11211:14;11204:34;11168:2;11163:3;11159:12;11152:19;;11000:252;;;11004:116;;;10651:611;10344:924;;;;;;:::o;8553:440:42:-;8630:11;8673:1;:8;8661:1;:8;:20;8653:53;;;;-1:-1:-1;;;8653:53:42;;21761:2:53;8653:53:42;;;21743:21:53;21800:2;21780:18;;;21773:30;-1:-1:-1;;;21819:18:53;;;21812:50;21879:18;;8653:53:42;21559:344:53;8653:53:42;8792:8;;8778:11;8810:154;8831:6;8827:1;:10;8810:154;;;8870:1;8872;8870:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8862:12:42;;:1;8864;8862:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;8862:4:42;:12;8858:96;;8903:5;8894:14;;8926:13;;;;8858:96;8839:3;;8810:154;;;-1:-1:-1;8982:4:42;;8553:440;-1:-1:-1;;;;8553:440:42:o;8999:241::-;9077:7;9096:14;9113:13;:20;;;;;:::i;:::-;;-1:-1:-1;9143:13:42;;-1:-1:-1;9167:25:42;:7;9113:20;9189:2;9167:13;:25::i;:::-;9159:34;;;:::i;:::-;9218:14;;;8999:241;-1:-1:-1;;;;8999:241:42:o;2779:335:35:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:35;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;3774:248:29:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:29;;-1:-1:-1;;;;;3941:19:29;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;9609:335:1:-;9670:11;9835:2;9829:4;9824:2;9818:9;9813:2;9809;9805:11;9802:1;9795:5;9784:54;9780:59;9893:2;9887:4;9883:2;9877:4;9874:1;9867:5;9856:40;-1:-1:-1;;9923:4:1;9917:11;;9609:335;-1:-1:-1;9609:335:1:o;14980:394::-;15069:7;15088:22;15120:21;15185:34;15207:6;15215:3;15185:21;:34::i;:::-;15151:68;;-1:-1:-1;15151:68:1;-1:-1:-1;15233:29:1;;;15229:78;;-1:-1:-1;;15278:18:1;;;;;;15229:78;15350:13;15324:23;15333:14;15324:6;:23;:::i;:::-;:39;;;;:::i;:::-;:43;;15366:1;15324:43;:::i;20911:536::-;21002:7;21042;21046:3;21042:1;:7;:::i;:::-;21025;:14;:24;21021:73;;;-1:-1:-1;;;21065:18:1;;21021:73;21103:22;;21212:31;21226:7;21235;21239:3;21235:1;:7;:::i;:::-;21212:13;:31::i;:::-;21172:71;;-1:-1:-1;21172:71:1;-1:-1:-1;21258:29:1;;;21254:78;;-1:-1:-1;;21303:18:1;;;;;;21254:78;21421:19;21396:22;21404:14;21396:5;:22;:::i;:::-;:44;;;;:::i;2999:704::-;3075:7;3084;3103:14;3120:36;3148:2;3152:3;3120:27;:36::i;:::-;3103:53;;3171:8;:13;;3183:1;3171:13;3167:70;;3208:1;3217:2;3220:3;3217:7;;;;;;;;:::i;:::-;;;;;3200:26;;-1:-1:-1;3217:7:1;;;-1:-1:-1;3200:26:1;;-1:-1:-1;3200:26:1;3167:70;3277:3;3262:12;3266:8;3262:1;:12;:::i;:::-;:18;;;;;;:::i;:::-;3250:2;:9;:30;3246:84;;;-1:-1:-1;;3317:1:1;3296:23;;;;;;;3246:84;3339:15;3368:8;:13;;3380:1;3368:13;3364:297;;3407:41;3428:18;3438:7;3442:3;3438:1;:7;:::i;:::-;3428:2;;:9;:18::i;:::-;7042:7;;;;;;7054;;;;;7041:21;;6959:110;3407:41;3397:51;;;;3364:297;;;3469:8;:13;;3481:1;3469:13;3465:196;;3508:41;3529:18;3539:7;3543:3;3539:1;:7;:::i;3529:18::-;6397:21;;;;;;6402:10;6360:6;;;;;6359:21;;;;6358:61;6485:2;6480:7;;;6468;;;6467:21;;6238:257;3508:41;3498:51;;;;3465:196;;;3570:8;:13;;3582:1;3570:13;3566:95;;3609:41;3630:18;3640:7;3644:3;3640:1;:7;:::i;3630:18::-;3623:26;;5965:22;5866:1;5793:6;;;5965:22;;;;5838:29;;;;5965:22;;;;5992:2;5964:30;;;5838:29;6056:7;5843:18;5792:29;;;;5838;;;;5791:77;;;;5918:7;;;5969:18;5917:30;6056:7;6061:2;6044:7;;;6056;;;6043:21;;5671:400;3609:41;3599:51;;;;3566:95;3670:26;;;;;-1:-1:-1;3688:7:1;-1:-1:-1;2999:704:1;;;;;;:::o;2286:759:0:-;2379:7;2398:22;2430:14;2490:37;2513:8;2523:3;2490:22;:37::i;:::-;2463:64;;-1:-1:-1;2463:64:0;-1:-1:-1;2541:38:0;;;2537:96;;-1:-1:-1;;2595:27:0;;;;;;2537:96;2643:16;;2687:18;2691:14;2687:1;:18;:::i;:::-;2669:36;;2721:9;2716:298;2740:6;2736:1;:10;2716:298;;;2796:41;2819:8;2829:7;2796:22;:41::i;:::-;2767:70;;-1:-1:-1;2767:70:0;-1:-1:-1;2855:32:0;;;2851:98;;-1:-1:-1;;2907:27:0;;;;;;;;;2851:98;2995:8;2974:18;2978:14;2974:1;:18;:::i;:::-;:29;;;;:::i;:::-;2963:40;;;;:::i;:::-;;-1:-1:-1;2748:3:0;;2716:298;;;-1:-1:-1;3031:7:0;2286:759;-1:-1:-1;;;;;;2286:759:0:o;2186:281:35:-;2263:17;-1:-1:-1;;;;;2263:29:35;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:35;;-1:-1:-1;;;;;3186:32:53;;2320:47:35;;;3168:51:53;3141:18;;2320:47:35;3022:203:53;2259:119:35;-1:-1:-1;;;;;;;;;;;2387:73:35;;-1:-1:-1;;;;;;2387:73:35;-1:-1:-1;;;;;2387:73:35;;;;;;;;;;2186:281::o;4106:253:38:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:38;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;6598:122:35:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:35;;;;;;;;;;;13785:388:1;13873:7;;13921:8;13926:3;13921:2;:8;:::i;:::-;13905:6;:13;:24;13901:78;;;-1:-1:-1;;;654:66:1;-1:-1:-1;13966:1:1;13945:23;;13901:78;13989:22;;14086:31;14100:6;14108:8;:3;14114:2;14108:8;:::i;14086:31::-;14052:65;;;;-1:-1:-1;13785:388:1;-1:-1:-1;;;;;13785:388:1:o;1550:446::-;1640:5;1667:2;1670:3;1667:7;;;;;;;;:::i;:::-;;;;;;;1661:14;:22;1657:93;;-1:-1:-1;1706:1:1;1699:8;;1657:93;1769:2;1772:3;1769:7;;;;;;;;:::i;:::-;;;;;;;1781:4;1763:22;1759:93;;-1:-1:-1;1808:1:1;1801:8;;1759:93;1871:2;1874:3;1871:7;;;;;;;;:::i;:::-;;;;;;;1883:4;1865:22;1861:93;;-1:-1:-1;1910:1:1;1903:8;;1861:93;-1:-1:-1;1971:1:1;1550:446;;;;:::o;13493:136:2:-;13566:6;13598:23;13606:6;13614;12550:28;12566:2;12550:28;12544:35;;12417:178;4625:582:38;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:38;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:38;;-1:-1:-1;;;;;3186:32:53;;5121:24:38;;;3168:51:53;3141:18;;5121:24:38;3022:203:53;5041:119:38;-1:-1:-1;5180:10:38;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:38;;;;;;;;;;;206:347:53;257:8;267:6;321:3;314:4;306:6;302:17;298:27;288:55;;339:1;336;329:12;288:55;-1:-1:-1;362:20:53;;405:18;394:30;;391:50;;;437:1;434;427:12;391:50;474:4;466:6;462:17;450:29;;526:3;519:4;510:6;502;498:19;494:30;491:39;488:59;;;543:1;540;533:12;558:785;657:6;665;673;681;689;742:2;730:9;721:7;717:23;713:32;710:52;;;758:1;755;748:12;710:52;798:9;785:23;827:18;868:2;860:6;857:14;854:34;;;884:1;881;874:12;854:34;923:58;973:7;964:6;953:9;949:22;923:58;:::i;:::-;1000:8;;-1:-1:-1;897:84:53;-1:-1:-1;1088:2:53;1073:18;;1060:32;;-1:-1:-1;1104:16:53;;;1101:36;;;1133:1;1130;1123:12;1101:36;;1172:60;1224:7;1213:8;1202:9;1198:24;1172:60;:::i;:::-;558:785;;;;-1:-1:-1;1251:8:53;1333:2;1318:18;1305:32;;558:785;-1:-1:-1;;;;558:785:53:o;1530:173::-;1598:20;;-1:-1:-1;;;;;1647:31:53;;1637:42;;1627:70;;1693:1;1690;1683:12;1627:70;1530:173;;;:::o;1708:127::-;1769:10;1764:3;1760:20;1757:1;1750:31;1800:4;1797:1;1790:15;1824:4;1821:1;1814:15;1840:995;1917:6;1925;1978:2;1966:9;1957:7;1953:23;1949:32;1946:52;;;1994:1;1991;1984:12;1946:52;2017:29;2036:9;2017:29;:::i;:::-;2007:39;;2097:2;2086:9;2082:18;2069:32;2120:18;2161:2;2153:6;2150:14;2147:34;;;2177:1;2174;2167:12;2147:34;2215:6;2204:9;2200:22;2190:32;;2260:7;2253:4;2249:2;2245:13;2241:27;2231:55;;2282:1;2279;2272:12;2231:55;2318:2;2305:16;2340:2;2336;2333:10;2330:36;;;2346:18;;:::i;:::-;2421:2;2415:9;2389:2;2475:13;;-1:-1:-1;;2471:22:53;;;2495:2;2467:31;2463:40;2451:53;;;2519:18;;;2539:22;;;2516:46;2513:72;;;2565:18;;:::i;:::-;2605:10;2601:2;2594:22;2640:2;2632:6;2625:18;2680:7;2675:2;2670;2666;2662:11;2658:20;2655:33;2652:53;;;2701:1;2698;2691:12;2652:53;2757:2;2752;2748;2744:11;2739:2;2731:6;2727:15;2714:46;2802:1;2797:2;2792;2784:6;2780:15;2776:24;2769:35;2823:6;2813:16;;;;;;;1840:995;;;;;:::o;3230:615::-;3316:6;3324;3377:2;3365:9;3356:7;3352:23;3348:32;3345:52;;;3393:1;3390;3383:12;3345:52;3433:9;3420:23;3462:18;3503:2;3495:6;3492:14;3489:34;;;3519:1;3516;3509:12;3489:34;3557:6;3546:9;3542:22;3532:32;;3602:7;3595:4;3591:2;3587:13;3583:27;3573:55;;3624:1;3621;3614:12;3573:55;3664:2;3651:16;3690:2;3682:6;3679:14;3676:34;;;3706:1;3703;3696:12;3676:34;3759:7;3754:2;3744:6;3741:1;3737:14;3733:2;3729:23;3725:32;3722:45;3719:65;;;3780:1;3777;3770:12;3719:65;3811:2;3803:11;;;;;3833:6;;-1:-1:-1;3230:615:53;;-1:-1:-1;;;;3230:615:53:o;3850:180::-;3909:6;3962:2;3950:9;3941:7;3937:23;3933:32;3930:52;;;3978:1;3975;3968:12;3930:52;-1:-1:-1;4001:23:53;;3850:180;-1:-1:-1;3850:180:53:o;4035:250::-;4120:1;4130:113;4144:6;4141:1;4138:13;4130:113;;;4220:11;;;4214:18;4201:11;;;4194:39;4166:2;4159:10;4130:113;;;-1:-1:-1;;4277:1:53;4259:16;;4252:27;4035:250::o;4290:270::-;4331:3;4369:5;4363:12;4396:6;4391:3;4384:19;4412:76;4481:6;4474:4;4469:3;4465:14;4458:4;4451:5;4447:16;4412:76;:::i;:::-;4542:2;4521:15;-1:-1:-1;;4517:29:53;4508:39;;;;4549:4;4504:50;;4290:270;-1:-1:-1;;4290:270:53:o;4565:217::-;4712:2;4701:9;4694:21;4675:4;4732:44;4772:2;4761:9;4757:18;4749:6;4732:44;:::i;5011:186::-;5070:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;5162:29;5181:9;5162:29;:::i;5387:394::-;5480:6;5533:2;5521:9;5512:7;5508:23;5504:32;5501:52;;;5549:1;5546;5539:12;5501:52;5589:9;5576:23;5622:18;5614:6;5611:30;5608:50;;;5654:1;5651;5644:12;5608:50;5677:22;;5733:3;5715:16;;;5711:26;5708:46;;;5750:1;5747;5740:12;7456:380;7535:1;7531:12;;;;7578;;;7599:61;;7653:4;7645:6;7641:17;7631:27;;7599:61;7706:2;7698:6;7695:14;7675:18;7672:38;7669:161;;7752:10;7747:3;7743:20;7740:1;7733:31;7787:4;7784:1;7777:15;7815:4;7812:1;7805:15;7669:161;;7456:380;;;:::o;7966:542::-;8067:2;8062:3;8059:11;8056:446;;;8103:1;8127:5;8124:1;8117:16;8171:4;8168:1;8158:18;8241:2;8229:10;8225:19;8222:1;8218:27;8212:4;8208:38;8277:4;8265:10;8262:20;8259:47;;;-1:-1:-1;8300:4:53;8259:47;8355:2;8350:3;8346:12;8343:1;8339:20;8333:4;8329:31;8319:41;;8410:82;8428:2;8421:5;8418:13;8410:82;;;8473:17;;;8454:1;8443:13;8410:82;;;8414:3;;;7966:542;;;:::o;8684:1202::-;8806:18;8801:3;8798:27;8795:53;;;8828:18;;:::i;:::-;8857:93;8946:3;8906:38;8938:4;8932:11;8906:38;:::i;:::-;8900:4;8857:93;:::i;:::-;8976:1;9001:2;8996:3;8993:11;9018:1;9013:615;;;;9672:1;9689:3;9686:93;;;-1:-1:-1;9745:19:53;;;9732:33;9686:93;-1:-1:-1;;8641:1:53;8637:11;;;8633:24;8629:29;8619:40;8665:1;8661:11;;;8616:57;9792:78;;8986:894;;9013:615;7913:1;7906:14;;;7950:4;7937:18;;-1:-1:-1;;9049:17:53;;;9149:9;9171:229;9185:7;9182:1;9179:14;9171:229;;;9274:19;;;9261:33;9246:49;;9381:4;9366:20;;;;9334:1;9322:14;;;;9201:12;9171:229;;;9175:3;9428;9419:7;9416:16;9413:159;;;9552:1;9548:6;9542:3;9536;9533:1;9529:11;9525:21;9521:34;9517:39;9504:9;9499:3;9495:19;9482:33;9478:79;9470:6;9463:95;9413:159;;;9615:1;9609:3;9606:1;9602:11;9598:19;9592:4;9585:33;8986:894;;;8684:1202;;;:::o;10200:266::-;10288:6;10283:3;10276:19;10340:6;10333:5;10326:4;10321:3;10317:14;10304:43;-1:-1:-1;10392:1:53;10367:16;;;10385:4;10363:27;;;10356:38;;;;10448:2;10427:15;;;-1:-1:-1;;10423:29:53;10414:39;;;10410:50;;10200:266::o;10471:502::-;10712:2;10701:9;10694:21;10675:4;10738:61;10795:2;10784:9;10780:18;10772:6;10764;10738:61;:::i;:::-;10847:9;10839:6;10835:22;10830:2;10819:9;10815:18;10808:50;10875:49;10917:6;10909;10901;10875:49;:::i;:::-;10867:57;;;10960:6;10955:2;10944:9;10940:18;10933:34;10471:502;;;;;;;;:::o;10978:127::-;11039:10;11034:3;11030:20;11027:1;11020:31;11070:4;11067:1;11060:15;11094:4;11091:1;11084:15;11110:168;11183:9;;;11214;;11231:15;;;11225:22;;11211:37;11201:71;;11252:18;;:::i;11635:127::-;11696:10;11691:3;11687:20;11684:1;11677:31;11727:4;11724:1;11717:15;11751:4;11748:1;11741:15;11767:125;11832:9;;;11853:10;;;11850:36;;;11866:18;;:::i;12576:286::-;12634:6;12687:2;12675:9;12666:7;12662:23;12658:32;12655:52;;;12703:1;12700;12693:12;12655:52;12729:23;;-1:-1:-1;;;;;;12781:32:53;;12771:43;;12761:71;;12828:1;12825;12818:12;12867:281;12925:6;12978:2;12966:9;12957:7;12953:23;12949:32;12946:52;;;12994:1;12991;12984:12;12946:52;13020:23;;-1:-1:-1;;;;;;13072:27:53;;13062:38;;13052:66;;13114:1;13111;13104:12;13153:521;13230:4;13236:6;13296:11;13283:25;13390:2;13386:7;13375:8;13359:14;13355:29;13351:43;13331:18;13327:68;13317:96;;13409:1;13406;13399:12;13317:96;13436:33;;13488:20;;;-1:-1:-1;13531:18:53;13520:30;;13517:50;;;13563:1;13560;13553:12;13517:50;13596:4;13584:17;;-1:-1:-1;13627:14:53;13623:27;;;13613:38;;13610:58;;;13664:1;13661;13654:12;15497:459;15738:6;15727:9;15720:25;15781:6;15776:2;15765:9;15761:18;15754:34;15824:3;15819:2;15808:9;15804:18;15797:31;15701:4;15845:62;15902:3;15891:9;15887:19;15879:6;15871;15845:62;:::i;:::-;15837:70;;15943:6;15938:2;15927:9;15923:18;15916:34;15497:459;;;;;;;;:::o;15961:277::-;16028:6;16081:2;16069:9;16060:7;16056:23;16052:32;16049:52;;;16097:1;16094;16087:12;16049:52;16129:9;16123:16;16182:5;16175:13;16168:21;16161:5;16158:32;16148:60;;16204:1;16201;16194:12;17300:128;17367:9;;;17388:11;;;17385:37;;;17402:18;;:::i;18687:184::-;18757:6;18810:2;18798:9;18789:7;18785:23;18781:32;18778:52;;;18826:1;18823;18816:12;18778:52;-1:-1:-1;18849:16:53;;18687:184;-1:-1:-1;18687:184:53:o;18876:885::-;-1:-1:-1;;;;;;19274:15:53;;;19262:28;;-1:-1:-1;;;;;;19319:28:53;;19315:1;19306:11;;19299:49;19205:3;;19391:6;19383;19379:1;19370:11;;19357:41;19426:6;19421:3;19417:16;19460:1;19456:2;19452:10;19482:1;19478:2;19471:13;19518:6;19510;19506:2;19493:32;;19552:6;19548:2;19544:15;19534:25;;19586:1;19582:2;19578:10;19608:1;19604:2;19597:13;19644:6;19636;19632:2;19619:32;-1:-1:-1;19713:15:53;;19674;;;;19691:1;19670:23;;19702:27;;;;-1:-1:-1;19745:10:53;;;18876:885;-1:-1:-1;;;;;;;;18876:885:53:o;21908:375::-;22026:12;;22074:4;22063:16;;22057:23;-1:-1:-1;;22148:11:53;;;;22026:12;22057:23;22182:2;22171:14;;22168:109;;;22264:2;22258;22248:6;22244:2;22240:15;22237:1;22233:23;22229:32;22225:2;22221:41;22217:50;22208:59;;22168:109;;;;21908:375;;;:::o;22288:148::-;22376:4;22355:12;;;22369;;;22351:31;;22394:13;;22391:39;;;22410:18;;:::i;22441:287::-;22570:3;22608:6;22602:13;22624:66;22683:6;22678:3;22671:4;22663:6;22659:17;22624:66;:::i;:::-;22706:16;;;;;22441:287;-1:-1:-1;;22441:287:53:o","linkReferences":{},"immutableReferences":{"50525":[{"start":5094,"length":32},{"start":5135,"length":32},{"start":5461,"length":32}]}},"methodIdentifiers":{"DEPOSIT_AMOUNT()":"ec6925a7","LIGHT_CLIENT()":"e613ae00","SYSTEM_CALLER()":"d761753e","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptOwnership()":"79ba5097","batchWithdraw(bytes32[])":"59c19cee","deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"dd95c7c6","depositScript()":"b93780f6","getWithdrawalCount()":"781952a8","initialize(bytes,bytes,uint256)":"41260137","initialized()":"158ef93e","operator()":"570ca735","owner()":"8da5cb5b","pendingOwner()":"e30c3978","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","requiredSigsCount()":"43e31687","scriptSuffix()":"87f8bf56","setDepositScript(bytes,bytes,uint256)":"9f963f59","setOperator(address)":"b3ab15fb","spentWtxIds(bytes32)":"5e0e5b3e","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(bytes32)":"8e19899e","withdrawalAddrs(uint256)":"d1c44456"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wtxId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"depositScript\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptSuffix\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"DepositScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOperator\",\"type\":\"address\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT\",\"outputs\":[{\"internalType\":\"contract BitcoinLightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"bitcoin_addresses\",\"type\":\"bytes32[]\"}],\"name\":\"batchWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.DepositParams\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredSigsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptSuffix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositScript\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigsCount\",\"type\":\"uint256\"}],\"name\":\"setDepositScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"spentWtxIds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"bitcoin_address\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawalAddrs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"batchWithdraw(bytes32[])\":{\"details\":\"Takes in multiple Bitcoin addresses as recipient addresses should be unique\",\"params\":{\"bitcoin_addresses\":\"The Bitcoin addresses of the receivers\"}},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"p\":\"The deposit parameters that contains the info of the deposit transaction on Bitcoin\"}},\"getWithdrawalCount()\":{\"returns\":{\"_0\":\"The count of withdrawals happened so far\"}},\"initialize(bytes,bytes,uint256)\":{\"params\":{\"_depositScript\":\"The deposit script expected in the witness field for all L1 deposits\",\"_requiredSigsCount\":\"The number of signatures that is contained in the deposit script\",\"_scriptSuffix\":\"The suffix of the deposit script that follows the receiver address\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDepositScript(bytes,bytes,uint256)\":{\"details\":\"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver\",\"params\":{\"_depositScript\":\"The new deposit script\",\"_requiredSigsCount\":\"The number of signatures that are needed for deposit transaction\",\"_scriptSuffix\":\"The part of the deposit script that succeeds the receiver address\"}},\"setOperator(address)\":{\"params\":{\"_operator\":\"Address of the privileged operator\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(bytes32)\":{\"params\":{\"bitcoin_address\":\"The Bitcoin address of the receiver\"}}},\"title\":\"Bridge contract of Clementine\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batchWithdraw(bytes32[])\":{\"notice\":\"Batch version of `withdraw` that can accept multiple cBTC\"},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver\"},\"initialize(bytes,bytes,uint256)\":{\"notice\":\"Initializes the bridge contract and sets the deposit script\"},\"setDepositScript(bytes,bytes,uint256)\":{\"notice\":\"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness\"},\"setOperator(address)\":{\"notice\":\"Sets the operator address that can process user deposits\"},\"withdraw(bytes32)\":{\"notice\":\"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf\",\"dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x668f026e05f732ed49b9a3d2a587e53442a866eca9b76162b113716c6ad1ad3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73e5f4e08fd5a1ae985105222d86ab81a7a6f8a9266ca1c25a4ded5afa2a2c1e\",\"dweb:/ipfs/QmPDxx3CV8EHGoQFAfJP4ChdUHRiPeMC6KvLZv7nhBfeT9\"]},\"src/Bridge.sol\":{\"keccak256\":\"0x39d942a84e715ae04d79ae8744859e682bb816ce5358a93decdb8c0eb81d2582\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8b1028afd6ff63cfad66a34b28f65d0387e8ed6d8c85dc8528b4e31f3beb2fb4\",\"dweb:/ipfs/QmYVXJkdNHRfnYN2o6LX6E8UH2gqt83c7J57ke5A7n4i2c\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"bytes32","name":"wtxId","type":"bytes32","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"bytes","name":"depositScript","type":"bytes","indexed":false},{"internalType":"bytes","name":"scriptSuffix","type":"bytes","indexed":false},{"internalType":"uint256","name":"requiredSigsCount","type":"uint256","indexed":false}],"type":"event","name":"DepositScriptUpdate","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOperator","type":"address","indexed":false},{"internalType":"address","name":"newOperator","type":"address","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Withdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIGHT_CLIENT","outputs":[{"internalType":"contract BitcoinLightClient","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"bytes32[]","name":"bitcoin_addresses","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"batchWithdraw"},{"inputs":[{"internalType":"struct Bridge.DepositParams","name":"p","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"depositScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWithdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"requiredSigsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptSuffix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"_depositScript","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_requiredSigsCount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositScript"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"spentWtxIds","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"bytes32","name":"bitcoin_address","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalAddrs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"batchWithdraw(bytes32[])":{"details":"Takes in multiple Bitcoin addresses as recipient addresses should be unique","params":{"bitcoin_addresses":"The Bitcoin addresses of the receivers"}},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"p":"The deposit parameters that contains the info of the deposit transaction on Bitcoin"}},"getWithdrawalCount()":{"returns":{"_0":"The count of withdrawals happened so far"}},"initialize(bytes,bytes,uint256)":{"params":{"_depositScript":"The deposit script expected in the witness field for all L1 deposits","_requiredSigsCount":"The number of signatures that is contained in the deposit script","_scriptSuffix":"The suffix of the deposit script that follows the receiver address"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDepositScript(bytes,bytes,uint256)":{"details":"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver","params":{"_depositScript":"The new deposit script","_requiredSigsCount":"The number of signatures that are needed for deposit transaction","_scriptSuffix":"The part of the deposit script that succeeds the receiver address"}},"setOperator(address)":{"params":{"_operator":"Address of the privileged operator"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"withdraw(bytes32)":{"params":{"bitcoin_address":"The Bitcoin address of the receiver"}}},"version":1},"userdoc":{"kind":"user","methods":{"batchWithdraw(bytes32[])":{"notice":"Batch version of `withdraw` that can accept multiple cBTC"},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver"},"initialize(bytes,bytes,uint256)":{"notice":"Initializes the bridge contract and sets the deposit script"},"setDepositScript(bytes,bytes,uint256)":{"notice":"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness"},"setOperator(address)":{"notice":"Sets the operator address that can process user deposits"},"withdraw(bytes32)":{"notice":"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator "}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/WitnessUtils.sol":{"keccak256":"0x1fa2790ebb0313f318f3c864fd6aed82b88216caff7fa7397960c132544d7a4a","urls":["bzz-raw://bccb5efa0edc81a435a9917433f0aea005ad71697dc5635edbc5acb9067d42cf","dweb:/ipfs/QmUXSwCsXinGZKbdWbhYHDvDLsRgYMuWsKbQR7JFoawA6K"],"license":"LGPL-3.0-or-later"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x668f026e05f732ed49b9a3d2a587e53442a866eca9b76162b113716c6ad1ad3c","urls":["bzz-raw://73e5f4e08fd5a1ae985105222d86ab81a7a6f8a9266ca1c25a4ded5afa2a2c1e","dweb:/ipfs/QmPDxx3CV8EHGoQFAfJP4ChdUHRiPeMC6KvLZv7nhBfeT9"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0x39d942a84e715ae04d79ae8744859e682bb816ce5358a93decdb8c0eb81d2582","urls":["bzz-raw://8b1028afd6ff63cfad66a34b28f65d0387e8ed6d8c85dc8528b4e31f3beb2fb4","dweb:/ipfs/QmYVXJkdNHRfnYN2o6LX6E8UH2gqt83c7J57ke5A7n4i2c"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":42} \ No newline at end of file diff --git a/crates/evm/src/evm/system_contracts/src/Bridge.sol b/crates/evm/src/evm/system_contracts/src/Bridge.sol index eb00610cf..c56680224 100644 --- a/crates/evm/src/evm/system_contracts/src/Bridge.sol +++ b/crates/evm/src/evm/system_contracts/src/Bridge.sol @@ -4,13 +4,14 @@ pragma solidity ^0.8.13; import "bitcoin-spv/solidity/contracts/ValidateSPV.sol"; import "bitcoin-spv/solidity/contracts/BTCUtils.sol"; import "../lib/WitnessUtils.sol"; -import "../lib/Ownable.sol"; import "./BitcoinLightClient.sol"; +import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; /// @title Bridge contract of Clementine /// @author Citrea -contract Bridge is Ownable { +contract Bridge is UUPSUpgradeable, Ownable2StepUpgradeable { using BTCUtils for bytes; using BytesLib for bytes; @@ -58,7 +59,7 @@ contract Bridge is Ownable { /// @param _depositScript The deposit script expected in the witness field for all L1 deposits /// @param _scriptSuffix The suffix of the deposit script that follows the receiver address /// @param _requiredSigsCount The number of signatures that is contained in the deposit script - function initialize(bytes calldata _depositScript, bytes calldata _scriptSuffix, uint256 _requiredSigsCount, address _owner) external onlySystem { + function initialize(bytes calldata _depositScript, bytes calldata _scriptSuffix, uint256 _requiredSigsCount) external onlySystem { require(!initialized, "Contract is already initialized"); require(_requiredSigsCount != 0, "Verifier count cannot be 0"); require(_depositScript.length != 0, "Deposit script cannot be empty"); @@ -70,7 +71,6 @@ contract Bridge is Ownable { // Set initial operator to SYSTEM_CALLER so that Citrea can get operational by starting to process deposits operator = SYSTEM_CALLER; - owner = _owner; emit OperatorUpdated(address(0), SYSTEM_CALLER); emit DepositScriptUpdate(_depositScript, _scriptSuffix, _requiredSigsCount); @@ -190,4 +190,6 @@ contract Bridge is Ownable { bytes20 _addr = bytes20(_script.slice(offset, 20)); return address(uint160(_addr)); } + + function _authorizeUpgrade(address) internal override onlyOwner {} } diff --git a/crates/evm/src/evm/system_contracts/test/Bridge.t.sol b/crates/evm/src/evm/system_contracts/test/Bridge.t.sol index 31550f803..6424a9c10 100644 --- a/crates/evm/src/evm/system_contracts/test/Bridge.t.sol +++ b/crates/evm/src/evm/system_contracts/test/Bridge.t.sol @@ -6,6 +6,8 @@ import "forge-std/console.sol"; import "../src/Bridge.sol"; import "bitcoin-spv/solidity/contracts/BTCUtils.sol"; +import "openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol"; + // !!! WARNINGS: // !!! - Update `testDepositThenWithdraw` and `testBatchWithdraw` with proper testing of withdrawal tree root if this goes to production @@ -18,9 +20,15 @@ contract BridgeHarness is Bridge { } } +contract FalseBridge is Bridge { + function falseFunc() public pure returns (bytes32) { + return keccak256("false"); + } +} + contract BridgeTest is Test { uint256 constant DEPOSIT_AMOUNT = 0.01 ether; - BridgeHarness public bridge; + BridgeHarness public bridge = BridgeHarness(address(0x3100000000000000000000000000000000000002)); bytes2 flag = hex"0001"; bytes4 version = hex"02000000"; bytes vin = hex"01d4d6c5c94583a0505dd0c1eb64760ba2a6a391f6da3164094ed8bcac190b7d6c0000000000fdffffff"; @@ -44,9 +52,15 @@ contract BridgeTest is Test { BitcoinLightClient bitcoinLightClient; function setUp() public { - bridge = new BridgeHarness(); + address bridgeImpl = address(new BridgeHarness()); + address erc1967_impl = address(new ERC1967Proxy(bridgeImpl, "")); + vm.etch(address(bridge), erc1967_impl.code); + bytes32 IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + bytes32 OWNER_SLOT = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300; + vm.store(address(bridge), IMPLEMENTATION_SLOT, bytes32(uint256(uint160(bridgeImpl)))); + vm.store(address(bridge), OWNER_SLOT, bytes32(uint256(uint160(owner)))); vm.prank(SYSTEM_CALLER); - bridge.initialize(depositScript, scriptSuffix, 5, owner); + bridge.initialize(depositScript, scriptSuffix, 5); vm.deal(address(bridge), 21_000_000 ether); address lightClient_impl = address(new BitcoinLightClient()); bitcoinLightClient = bridge.LIGHT_CLIENT(); @@ -54,7 +68,7 @@ contract BridgeTest is Test { vm.startPrank(SYSTEM_CALLER); bitcoinLightClient.initializeBlockNumber(INITIAL_BLOCK_NUMBER); - // Arbitrary blockhash as this is mock + // Arbitrary blockhash as this is mock bitcoinLightClient.setBlockInfo(mockBlockhash, witnessRoot); vm.stopPrank(); @@ -185,7 +199,7 @@ contract BridgeTest is Test { function testCannotReinitialize() public { vm.expectRevert("Contract is already initialized"); vm.prank(SYSTEM_CALLER); - bridge.initialize(depositScript, scriptSuffix, 5, owner); + bridge.initialize(depositScript, scriptSuffix, 5); } function testCanChangeOperatorAndDeposit() public { @@ -233,6 +247,32 @@ contract BridgeTest is Test { assertEq(5, bridge.requiredSigsCount()); } + function testUpgrade() public { + address falseBridgeImpl = address(new FalseBridge()); + vm.prank(owner); + bridge.upgradeToAndCall(falseBridgeImpl, ""); + assertEq(FalseBridge(address(bridge)).falseFunc(), keccak256("false")); + } + + function testNonOwnerCannotUpgrade() public { + address falseBridgeImpl = address(new FalseBridge()); + vm.prank(user); + vm.expectRevert(); + bridge.upgradeToAndCall(falseBridgeImpl, ""); + } + + function testOwnerCanChangeAndUpgrade() public { + address falseBridgeImpl = address(new FalseBridge()); + vm.stopPrank(); + address newOwner = makeAddr("citrea_new_owner"); + vm.prank(owner); + bridge.transferOwnership(newOwner); + vm.startPrank(newOwner); + bridge.acceptOwnership(); + bridge.upgradeToAndCall(falseBridgeImpl, ""); + assertEq(FalseBridge(address(bridge)).falseFunc(), keccak256("false")); + } + function isKeccakEqual(bytes memory a, bytes memory b) public pure returns (bool result) { result = keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)); } From 71b8357ed2fdfd164a6fff2f87e7b74a8dd49395 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:24:01 +0300 Subject: [PATCH 07/31] Fix comment issue in Bridge --- crates/evm/src/evm/system_contracts/src/Bridge.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/evm/src/evm/system_contracts/src/Bridge.sol b/crates/evm/src/evm/system_contracts/src/Bridge.sol index c56680224..67cd84a12 100644 --- a/crates/evm/src/evm/system_contracts/src/Bridge.sol +++ b/crates/evm/src/evm/system_contracts/src/Bridge.sol @@ -92,7 +92,7 @@ contract Bridge is UUPSUpgradeable, Ownable2StepUpgradeable { emit DepositScriptUpdate(_depositScript, _scriptSuffix, _requiredSigsCount); } - /// @notice Checks if funds 1 BTC is sent to the bridge multisig on Bitcoin, and if so, sends 1 cBTC to the receiver + /// @notice Checks if funds the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount to the receiver /// @param p The deposit parameters that contains the info of the deposit transaction on Bitcoin function deposit( DepositParams calldata p From a8fe3f977813d2611522895df709d208db1d893c Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:24:24 +0300 Subject: [PATCH 08/31] Comment fix --- crates/evm/src/evm/system_contracts/src/Bridge.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/evm/src/evm/system_contracts/src/Bridge.sol b/crates/evm/src/evm/system_contracts/src/Bridge.sol index 67cd84a12..ff8e807eb 100644 --- a/crates/evm/src/evm/system_contracts/src/Bridge.sol +++ b/crates/evm/src/evm/system_contracts/src/Bridge.sol @@ -92,7 +92,7 @@ contract Bridge is UUPSUpgradeable, Ownable2StepUpgradeable { emit DepositScriptUpdate(_depositScript, _scriptSuffix, _requiredSigsCount); } - /// @notice Checks if funds the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount to the receiver + /// @notice Checks if the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount to the receiver /// @param p The deposit parameters that contains the info of the deposit transaction on Bitcoin function deposit( DepositParams calldata p From 08bde338fb7defd42ae86ec68dbc8982483267dd Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:25:23 +0300 Subject: [PATCH 09/31] Change title of Bridge --- crates/evm/src/evm/system_contracts/src/Bridge.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/evm/src/evm/system_contracts/src/Bridge.sol b/crates/evm/src/evm/system_contracts/src/Bridge.sol index ff8e807eb..b77ec6b7e 100644 --- a/crates/evm/src/evm/system_contracts/src/Bridge.sol +++ b/crates/evm/src/evm/system_contracts/src/Bridge.sol @@ -8,7 +8,7 @@ import "./BitcoinLightClient.sol"; import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; -/// @title Bridge contract of Clementine +/// @title Bridge contract for the Citrea end of Citrea <> Bitcoin bridge /// @author Citrea contract Bridge is UUPSUpgradeable, Ownable2StepUpgradeable { From ad6a6feda8b3ea9b190cfee0f2639c23a511128c Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:32:48 +0300 Subject: [PATCH 10/31] Fix genesis --- .../genesis/demo-tests/bitcoin-regtest/evm.json | 12 +++++++++++- bin/test-data/genesis/demo-tests/mock/evm.json | 12 +++++++++++- .../integration-tests-low-block-gas-limit/evm.json | 13 +++++++++++-- bin/test-data/genesis/integration-tests/evm.json | 12 +++++++++++- 4 files changed, 44 insertions(+), 5 deletions(-) diff --git a/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json b/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json index a92066322..a2a3f6040 100644 --- a/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json +++ b/bin/test-data/genesis/demo-tests/bitcoin-regtest/evm.json @@ -23,7 +23,17 @@ { "address": "0x3100000000000000000000000000000000000002", "balance": "0x115EEC47F6CF7E35000000", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000002", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000002", + "balance": "0x00", + "code": "0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033" } ], "chain_id": 5655, diff --git a/bin/test-data/genesis/demo-tests/mock/evm.json b/bin/test-data/genesis/demo-tests/mock/evm.json index df9af3c12..68b5bddf8 100644 --- a/bin/test-data/genesis/demo-tests/mock/evm.json +++ b/bin/test-data/genesis/demo-tests/mock/evm.json @@ -68,7 +68,17 @@ { "address": "0x3100000000000000000000000000000000000002", "balance": "0x115EEC47F6CF7E35000000", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000002", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000002", + "balance": "0x00", + "code": "0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033" } ], "chain_id": 5655, diff --git a/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json b/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json index 8fe12bf11..1c1fd6c80 100644 --- a/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json +++ b/bin/test-data/genesis/integration-tests-low-block-gas-limit/evm.json @@ -23,9 +23,18 @@ { "address": "0x3100000000000000000000000000000000000002", "balance": "0x115EEC47F6CF7E35000000", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000002", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000002", + "balance": "0x00", + "code": "0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033" } - ], "chain_id": 5655, "limit_contract_code_size": null, diff --git a/bin/test-data/genesis/integration-tests/evm.json b/bin/test-data/genesis/integration-tests/evm.json index 6395fd05f..b3753b18c 100644 --- a/bin/test-data/genesis/integration-tests/evm.json +++ b/bin/test-data/genesis/integration-tests/evm.json @@ -23,7 +23,17 @@ { "address": "0x3100000000000000000000000000000000000002", "balance": "0x115EEC47F6CF7E35000000", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000002", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000002", + "balance": "0x00", + "code": "0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033" } ], "chain_id": 5655, From a72d6d794397ce35cb736f5195509afc1cf2c528 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:33:40 +0300 Subject: [PATCH 11/31] Fix a remaining genesis file --- .../evm.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json b/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json index 1e026830e..a92066322 100644 --- a/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json +++ b/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json @@ -8,7 +8,17 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", From dee5990f8b808034685580e10cd69ce01aa4d18c Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:35:02 +0300 Subject: [PATCH 12/31] Adapt last genesis file to bridge upgradeability --- .../evm.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json b/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json index a92066322..a2a3f6040 100644 --- a/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json +++ b/bin/test-data/genesis/integration-tests-low-max-l2-blocks-per-l1/evm.json @@ -23,7 +23,17 @@ { "address": "0x3100000000000000000000000000000000000002", "balance": "0x115EEC47F6CF7E35000000", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000002", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000002", + "balance": "0x00", + "code": "0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033" } ], "chain_id": 5655, From 74a5ac308bb4ef9c413f8fd8fe2b849321e1e96a Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:48:40 +0300 Subject: [PATCH 13/31] Fix library tests as storage slots order of Bridge is affected --- bin/citrea/tests/evm/ethers_js/test.js | 4 ++-- bin/citrea/tests/evm/web3_py/test.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/citrea/tests/evm/ethers_js/test.js b/bin/citrea/tests/evm/ethers_js/test.js index 79c6c0274..a62698c0e 100644 --- a/bin/citrea/tests/evm/ethers_js/test.js +++ b/bin/citrea/tests/evm/ethers_js/test.js @@ -119,8 +119,8 @@ describe("RpcTests", function() { }); it("getStorage returns the correct storage", async function() { - // 3rd slot of Bridge is 'operator' and should be the system caller address on its own - let storage = await provider.getStorage("0x3100000000000000000000000000000000000002", 2); + // 2rd slot of Bridge is 'operator' and should be the system caller address on its own + let storage = await provider.getStorage("0x3100000000000000000000000000000000000002", 1); expect(storage).to.equal("0x000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead"); }); diff --git a/bin/citrea/tests/evm/web3_py/test.py b/bin/citrea/tests/evm/web3_py/test.py index dbe5c6ea7..ec15b220a 100644 --- a/bin/citrea/tests/evm/web3_py/test.py +++ b/bin/citrea/tests/evm/web3_py/test.py @@ -42,7 +42,7 @@ def test_get_balance(self): self.assertGreaterEqual(balance, (21 * 10 ** 6) * 10 ** 18) def test_get_storage_at(self): - slot = self.web3.eth.get_storage_at("0x3100000000000000000000000000000000000002", 2) + slot = self.web3.eth.get_storage_at("0x3100000000000000000000000000000000000002", 1) self.assertEqual(slot, HexBytes('0x000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead')) def test_get_code(self): From 8a369c89fce8c6e40a0dc7d05dda8918e9dd27a0 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:51:44 +0300 Subject: [PATCH 14/31] Change second block base fee --- bin/citrea/tests/e2e/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/citrea/tests/e2e/mod.rs b/bin/citrea/tests/e2e/mod.rs index 53a876231..81cbd16f7 100644 --- a/bin/citrea/tests/e2e/mod.rs +++ b/bin/citrea/tests/e2e/mod.rs @@ -2095,7 +2095,7 @@ async fn transaction_failing_on_l1_is_removed_from_mempool() -> Result<(), anyho let random_wallet_address = random_wallet.address(); - let second_block_base_fee = 768881663; + let second_block_base_fee = 768595319; let _pending = seq_test_client .send_eth( From d6ce4d2c0ab860c141f847bb68ba6af20451533f Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Tue, 25 Jun 2024 18:12:52 +0300 Subject: [PATCH 15/31] Storage fix in tests --- bin/citrea/tests/evm/ethers_js/test.js | 2 +- bin/citrea/tests/evm/web3_py/test.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/citrea/tests/evm/ethers_js/test.js b/bin/citrea/tests/evm/ethers_js/test.js index a62698c0e..c85e35ad9 100644 --- a/bin/citrea/tests/evm/ethers_js/test.js +++ b/bin/citrea/tests/evm/ethers_js/test.js @@ -121,7 +121,7 @@ describe("RpcTests", function() { it("getStorage returns the correct storage", async function() { // 2rd slot of Bridge is 'operator' and should be the system caller address on its own let storage = await provider.getStorage("0x3100000000000000000000000000000000000002", 1); - expect(storage).to.equal("0x000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead"); + expect(storage).to.equal("0x0000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead01"); }); it("getLogs returns the correct logs", async function() { diff --git a/bin/citrea/tests/evm/web3_py/test.py b/bin/citrea/tests/evm/web3_py/test.py index ec15b220a..5355711a9 100644 --- a/bin/citrea/tests/evm/web3_py/test.py +++ b/bin/citrea/tests/evm/web3_py/test.py @@ -42,8 +42,8 @@ def test_get_balance(self): self.assertGreaterEqual(balance, (21 * 10 ** 6) * 10 ** 18) def test_get_storage_at(self): - slot = self.web3.eth.get_storage_at("0x3100000000000000000000000000000000000002", 1) - self.assertEqual(slot, HexBytes('0x000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead')) + slot = self.web3.eth.get_storage_at("0x3100000000000000000000000000000000000002", 0) + self.assertEqual(slot, HexBytes('0x0000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead01')) def test_get_code(self): code = self.web3.eth.get_code('0x3100000000000000000000000000000000000001') From 04149352ba7b520d0e061516e6b459cc967a3b1a Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Wed, 26 Jun 2024 10:55:24 +0300 Subject: [PATCH 16/31] Fix bridge wrapper --- crates/evm/src/evm/system_contracts/mod.rs | 35 ++++++++++------------ 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/crates/evm/src/evm/system_contracts/mod.rs b/crates/evm/src/evm/system_contracts/mod.rs index e6b5d98da..d14804374 100644 --- a/crates/evm/src/evm/system_contracts/mod.rs +++ b/crates/evm/src/evm/system_contracts/mod.rs @@ -80,29 +80,26 @@ impl Bridge { // _depositScript: hex!("d2205daf577048c5e5a9a75d0a924ed03e226c3304f4a2f01c65ca1dab73522e6b8bad206228eba653cf1819bcfc1bc858630e5ae373eec1a9924322a5fe8445c5e76027ad201521d65f64be3f71b71ca462220f13c77b251027f6ca443a483353a96fbce222ad200fabeed269694ee83d9b3343a571202e68af65d05feda61dbed0c4bdb256a6eaad2000326d6f721c03dc5f1d8817d8f8ee890a95a2eeda0d4d9a01b1cc9b7b1b724dac00630663697472656114").into(), // _scriptSuffix: hex!("0800000000000f424068").into(), // _requiredSigsCount: U256::from(5), - // _owner: address!("f9725b63fe14efaf7cc705ba4e5c55a03d50e940"), // } // .abi_encode() let params = vec![ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 114, 91, 99, - 254, 20, 239, 175, 124, 199, 5, 186, 78, 92, 85, 160, 61, 80, 233, 64, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 210, - 32, 93, 175, 87, 112, 72, 197, 229, 169, 167, 93, 10, 146, 78, 208, 62, 34, 108, 51, 4, - 244, 162, 240, 28, 101, 202, 29, 171, 115, 82, 46, 107, 139, 173, 32, 98, 40, 235, 166, - 83, 207, 24, 25, 188, 252, 27, 200, 88, 99, 14, 90, 227, 115, 238, 193, 169, 146, 67, - 34, 165, 254, 132, 69, 197, 231, 96, 39, 173, 32, 21, 33, 214, 95, 100, 190, 63, 113, - 183, 28, 164, 98, 34, 15, 19, 199, 123, 37, 16, 39, 246, 202, 68, 58, 72, 51, 83, 169, - 111, 188, 226, 34, 173, 32, 15, 171, 238, 210, 105, 105, 78, 232, 61, 155, 51, 67, 165, - 113, 32, 46, 104, 175, 101, 208, 95, 237, 166, 29, 190, 208, 196, 189, 178, 86, 166, - 234, 173, 32, 0, 50, 109, 111, 114, 28, 3, 220, 95, 29, 136, 23, 216, 248, 238, 137, - 10, 149, 162, 238, 218, 13, 77, 154, 1, 177, 204, 155, 123, 27, 114, 77, 172, 0, 99, 6, - 99, 105, 116, 114, 101, 97, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 8, 0, 0, 0, - 0, 0, 15, 66, 64, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, + 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 210, 32, 93, 175, 87, 112, 72, 197, 229, 169, + 167, 93, 10, 146, 78, 208, 62, 34, 108, 51, 4, 244, 162, 240, 28, 101, 202, 29, 171, + 115, 82, 46, 107, 139, 173, 32, 98, 40, 235, 166, 83, 207, 24, 25, 188, 252, 27, 200, + 88, 99, 14, 90, 227, 115, 238, 193, 169, 146, 67, 34, 165, 254, 132, 69, 197, 231, 96, + 39, 173, 32, 21, 33, 214, 95, 100, 190, 63, 113, 183, 28, 164, 98, 34, 15, 19, 199, + 123, 37, 16, 39, 246, 202, 68, 58, 72, 51, 83, 169, 111, 188, 226, 34, 173, 32, 15, + 171, 238, 210, 105, 105, 78, 232, 61, 155, 51, 67, 165, 113, 32, 46, 104, 175, 101, + 208, 95, 237, 166, 29, 190, 208, 196, 189, 178, 86, 166, 234, 173, 32, 0, 50, 109, 111, + 114, 28, 3, 220, 95, 29, 136, 23, 216, 248, 238, 137, 10, 149, 162, 238, 218, 13, 77, + 154, 1, 177, 204, 155, 123, 27, 114, 77, 172, 0, 99, 6, 99, 105, 116, 114, 101, 97, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 8, 0, 0, 0, 0, 0, 15, 66, 64, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; let mut func_selector = Vec::with_capacity(4 + params.len()); From 23a86b34e5e754b68c56f66772bab38a22c878ca Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Wed, 26 Jun 2024 18:07:05 +0300 Subject: [PATCH 17/31] genesis update --- resources/test-data/demo-tests/mock/evm.json | 24 ++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/resources/test-data/demo-tests/mock/evm.json b/resources/test-data/demo-tests/mock/evm.json index 1a968cf61..68b5bddf8 100644 --- a/resources/test-data/demo-tests/mock/evm.json +++ b/resources/test-data/demo-tests/mock/evm.json @@ -53,12 +53,32 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", "balance": "0x115EEC47F6CF7E35000000", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000002", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000002", + "balance": "0x00", + "code": "0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033" } ], "chain_id": 5655, From 259bbac2b0348cfed56d6c204bac20ced4111d38 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:46:47 +0300 Subject: [PATCH 18/31] Fix sys tx tests config data --- crates/evm/src/tests/sys_tx_tests.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index b726d055e..797e2125c 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -476,6 +476,17 @@ fn config_push_contracts(config: &mut EvmConfig) { U256::ZERO, Bytes::from_static(&hex!("608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033")), 0, + [ + (U256::from_be_slice(&hex!("360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc")), U256::from_be_slice(&hex!("3200000000000000000000000000000000000001"))), + (U256::from_be_slice(&hex!("9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300")), U256::from_be_slice(&hex!("f39fd6e51aad88f6f4ce6ab8827279cfffb92266"))), + ].into_iter().collect(), + )); + + config.data.push(AccountData::new( + address!("3200000000000000000000000000000000000001"), + U256::ZERO, + Bytes::from_static(&hex!("6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033")), + 0, HashMap::new() )); From c6426632a30819a4564c78d03d957d8ef7fb4d01 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:04:22 +0300 Subject: [PATCH 19/31] Fix sys tests config --- crates/evm/src/tests/sys_tx_tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index 797e2125c..76c2ec86a 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -474,7 +474,7 @@ fn config_push_contracts(config: &mut EvmConfig) { config.data.push(AccountData::new( BitcoinLightClient::address(), U256::ZERO, - Bytes::from_static(&hex!("608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033")), + Bytes::from_static(&hex!("6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033")), 0, [ (U256::from_be_slice(&hex!("360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc")), U256::from_be_slice(&hex!("3200000000000000000000000000000000000001"))), From bd0c39e48afdb07e7afc5236241360bf814c0480 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:18:53 +0300 Subject: [PATCH 20/31] change mock genesis --- resources/genesis/mock/evm.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/resources/genesis/mock/evm.json b/resources/genesis/mock/evm.json index 1a968cf61..df9af3c12 100644 --- a/resources/genesis/mock/evm.json +++ b/resources/genesis/mock/evm.json @@ -53,7 +53,17 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", From 5a12d5258a08bc74f03cfd4c2409b3b04cadb916 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:30:58 +0300 Subject: [PATCH 21/31] Fix getCode expectations --- bin/citrea/tests/evm/ethers_js/test.js | 4 ++-- bin/citrea/tests/evm/web3_py/test.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/citrea/tests/evm/ethers_js/test.js b/bin/citrea/tests/evm/ethers_js/test.js index 79c6c0274..7a2b3de24 100644 --- a/bin/citrea/tests/evm/ethers_js/test.js +++ b/bin/citrea/tests/evm/ethers_js/test.js @@ -114,8 +114,8 @@ describe("RpcTests", function() { }); it("getCode returns the correct code", async function() { - let code = await provider.getCode("0x3100000000000000000000000000000000000001"); // BitcoinLightClient - expect(code).to.equal("0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033"); + let code = await provider.getCode("0x3200000000000000000000000000000000000001"); // BitcoinLightClient + expect(code).to.equal("0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033"); }); it("getStorage returns the correct storage", async function() { diff --git a/bin/citrea/tests/evm/web3_py/test.py b/bin/citrea/tests/evm/web3_py/test.py index dbe5c6ea7..8f0161e69 100644 --- a/bin/citrea/tests/evm/web3_py/test.py +++ b/bin/citrea/tests/evm/web3_py/test.py @@ -46,8 +46,8 @@ def test_get_storage_at(self): self.assertEqual(slot, HexBytes('0x000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead')) def test_get_code(self): - code = self.web3.eth.get_code('0x3100000000000000000000000000000000000001') - self.assertEqual(code, HexBytes('0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033')) + code = self.web3.eth.get_code('0x3200000000000000000000000000000000000001') + self.assertEqual(code, HexBytes('0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033')) def test_get_block(self): block = self.web3.eth.get_block('latest') From b6bb5aba9ffd28161e7425b5f27a645db0f63bb4 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 15:15:35 +0300 Subject: [PATCH 22/31] Fix hardcoded gas values --- crates/evm/src/tests/sys_tx_tests.rs | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index 76c2ec86a..b7ec2242d 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -43,18 +43,18 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 43615, + cumulative_gas_used: 48522, logs: vec![] }, - gas_used: 43615, + gas_used: 48522, log_index_start: 0, - diff_size: 220, + diff_size: 168, }, Receipt { // BitcoinLightClient::setBlockInfo(U256, U256) receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 117196, + cumulative_gas_used: 127013, logs: vec![ Log { address: BitcoinLightClient::address(), @@ -65,15 +65,15 @@ fn test_sys_bitcoin_light_client() { } ] }, - gas_used: 73581, + gas_used: 78491, log_index_start: 0, - diff_size: 348, + diff_size: 296, }, Receipt { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 415811, + cumulative_gas_used: 425628, logs: vec![ Log { address: Bridge::address(), @@ -188,7 +188,7 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 73581, + cumulative_gas_used: 78491, logs: vec![ Log { address: BitcoinLightClient::address(), @@ -199,15 +199,15 @@ fn test_sys_bitcoin_light_client() { } ] }, - gas_used: 73581, + gas_used: 78491, log_index_start: 0, - diff_size: 348, + diff_size: 296, }, Receipt { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 187816, + cumulative_gas_used: 192726,tes logs: vec![] }, gas_used: 114235, @@ -322,17 +322,17 @@ fn test_sys_tx_gas_usage_effect_on_block_gas_limit() { let context = C::new(sender_address, sequencer_address, 2); let sys_tx_gas_usage = evm.get_pending_txs_cumulative_gas_used(&mut working_set); - assert_eq!(sys_tx_gas_usage, 73581); + assert_eq!(sys_tx_gas_usage, 78491); let mut rlp_transactions = Vec::new(); // Check: Given now we also push bridge contract, is the following calculation correct? - // the amount of gas left is 30_000_000 - 73581 = 29926419 + // the amount of gas left is 30_000_000 - 78491 = 29_921_509 // send barely enough gas to reach the limit // one publish event message is 26388 gas - // 29926419 / 26388 = 1134.09 - // so there cannot be more than 1134 messages + // 29921509 / 26388 = 1133.09 + // so there cannot be more than 1133 messages for i in 0..11350 { rlp_transactions.push(publish_event_message( contract_addr, @@ -485,7 +485,7 @@ fn config_push_contracts(config: &mut EvmConfig) { config.data.push(AccountData::new( address!("3200000000000000000000000000000000000001"), U256::ZERO, - Bytes::from_static(&hex!("6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033")), + Bytes::from_static(&hex!("6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033")), 0, HashMap::new() )); From 0434160a0bc92ca6476eb71de97999b82aa6783f Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 15:28:41 +0300 Subject: [PATCH 23/31] Sync genesis files --- resources/genesis/bitcoin-regtest/evm.json | 2 +- resources/genesis/mock/evm.json | 2 +- .../test-data/demo-tests/bitcoin-regtest/evm.json | 2 +- resources/test-data/demo-tests/mock/evm.json | 12 +++++++++++- .../integration-tests-low-block-gas-limit/evm.json | 2 +- .../evm.json | 2 +- resources/test-data/integration-tests/evm.json | 2 +- 7 files changed, 17 insertions(+), 7 deletions(-) diff --git a/resources/genesis/bitcoin-regtest/evm.json b/resources/genesis/bitcoin-regtest/evm.json index df9af3c12..2018f459b 100644 --- a/resources/genesis/bitcoin-regtest/evm.json +++ b/resources/genesis/bitcoin-regtest/evm.json @@ -63,7 +63,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x00", - "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/resources/genesis/mock/evm.json b/resources/genesis/mock/evm.json index df9af3c12..2018f459b 100644 --- a/resources/genesis/mock/evm.json +++ b/resources/genesis/mock/evm.json @@ -63,7 +63,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x00", - "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/resources/test-data/demo-tests/bitcoin-regtest/evm.json b/resources/test-data/demo-tests/bitcoin-regtest/evm.json index a92066322..eb865773e 100644 --- a/resources/test-data/demo-tests/bitcoin-regtest/evm.json +++ b/resources/test-data/demo-tests/bitcoin-regtest/evm.json @@ -18,7 +18,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x00", - "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/resources/test-data/demo-tests/mock/evm.json b/resources/test-data/demo-tests/mock/evm.json index 1a968cf61..2018f459b 100644 --- a/resources/test-data/demo-tests/mock/evm.json +++ b/resources/test-data/demo-tests/mock/evm.json @@ -53,7 +53,17 @@ { "address": "0x3100000000000000000000000000000000000001", "balance": "0x00", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212202fa9b28760396981b6b0d8418d5de50f0783041c49eced580ada3a97fdbcae6f64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000001", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000001", + "balance": "0x00", + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/resources/test-data/integration-tests-low-block-gas-limit/evm.json b/resources/test-data/integration-tests-low-block-gas-limit/evm.json index 8fe12bf11..e71e48d66 100644 --- a/resources/test-data/integration-tests-low-block-gas-limit/evm.json +++ b/resources/test-data/integration-tests-low-block-gas-limit/evm.json @@ -18,7 +18,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x00", - "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json b/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json index a92066322..eb865773e 100644 --- a/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json +++ b/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json @@ -18,7 +18,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x00", - "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", diff --git a/resources/test-data/integration-tests/evm.json b/resources/test-data/integration-tests/evm.json index 6395fd05f..b153c96ef 100644 --- a/resources/test-data/integration-tests/evm.json +++ b/resources/test-data/integration-tests/evm.json @@ -18,7 +18,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x00", - "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033" + "code": "0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033" }, { "address": "0x3100000000000000000000000000000000000002", From 2cc6af72dde64a533949a581402dea71670ae979 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 15:30:37 +0300 Subject: [PATCH 24/31] fix typo --- crates/evm/src/tests/sys_tx_tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index b7ec2242d..5a5bb8e54 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -207,7 +207,7 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 192726,tes + cumulative_gas_used: 192726, logs: vec![] }, gas_used: 114235, From acd2e94e2cf57c27cb015c5c1755a1e755dd3f0c Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 15:44:18 +0300 Subject: [PATCH 25/31] test fixes --- bin/citrea/tests/evm/ethers_js/test.js | 2 +- bin/citrea/tests/evm/web3_py/test.py | 2 +- crates/evm/src/tests/sys_tx_tests.rs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/citrea/tests/evm/ethers_js/test.js b/bin/citrea/tests/evm/ethers_js/test.js index 7a2b3de24..af1ba40fe 100644 --- a/bin/citrea/tests/evm/ethers_js/test.js +++ b/bin/citrea/tests/evm/ethers_js/test.js @@ -115,7 +115,7 @@ describe("RpcTests", function() { it("getCode returns the correct code", async function() { let code = await provider.getCode("0x3200000000000000000000000000000000000001"); // BitcoinLightClient - expect(code).to.equal("0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033"); + expect(code).to.equal("0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033"); }); it("getStorage returns the correct storage", async function() { diff --git a/bin/citrea/tests/evm/web3_py/test.py b/bin/citrea/tests/evm/web3_py/test.py index 8f0161e69..cfc4f0660 100644 --- a/bin/citrea/tests/evm/web3_py/test.py +++ b/bin/citrea/tests/evm/web3_py/test.py @@ -47,7 +47,7 @@ def test_get_storage_at(self): def test_get_code(self): code = self.web3.eth.get_code('0x3200000000000000000000000000000000000001') - self.assertEqual(code, HexBytes('0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209de0a78d2c8e934fc8ae17186c31de3e6f82fc8435f10a9b67f21b42265c2ab264736f6c63430008190033')) + self.assertEqual(code, HexBytes('0x6080604052600436106101145760003560e01c8063715018a6116100a0578063d269a03e11610064578063d269a03e14610332578063d761753e14610352578063e30c39781461037a578063ee82ac5e1461038f578063f2fde38b146103bc57600080fd5b8063715018a61461027057806379ba5097146102855780638da5cb5b1461029a578063a91d8b3d146102c7578063ad3cb1cc146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101c85780634ffd344a146101db57806352d1902d1461020b57806357e871e71461022057806361b207e21461023657600080fd5b80630466efc4146101195780630e27bc11146101595780631f5783331461017b57806334cdf78d1461019b575b600080fd5b34801561012557600080fd5b50610146610134366004610d50565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d69565b6103dc565b005b34801561018757600080fd5b50610179610196366004610d50565b610505565b3480156101a757600080fd5b506101466101b6366004610d50565b60016020526000908152604090205481565b6101796101d6366004610dbd565b6105b3565b3480156101e757600080fd5b506101fb6101f6366004610ec8565b6105d2565b6040519015158152602001610150565b34801561021757600080fd5b506101466105f8565b34801561022c57600080fd5b5061014660005481565b34801561024257600080fd5b50610146610251366004610d50565b6000908152600160209081526040808320548352600290915290205490565b34801561027c57600080fd5b50610179610615565b34801561029157600080fd5b50610179610629565b3480156102a657600080fd5b506102af610671565b6040516001600160a01b039091168152602001610150565b3480156102d357600080fd5b506101466102e2366004610d50565b60026020526000908152604090205481565b34801561030057600080fd5b50610325604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101509190610f47565b34801561033e57600080fd5b506101fb61034d366004610ec8565b6106a6565b34801561035e57600080fd5b506102af73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561038657600080fd5b506102af6106b5565b34801561039b57600080fd5b506101466103aa366004610d50565b60009081526001602052604090205490565b3480156103c857600080fd5b506101796103d7366004610f7a565b6106de565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104445760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600080549081900361048a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640161043b565b60008181526001602081905260409091208490556104a9908290610f95565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146105685760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c657200604482015260640161043b565b600054156105ae5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161043b565b600055565b6105bb610763565b6105c482610808565b6105ce8282610810565b5050565b6000858152600160205260408120546105ee90868686866108d2565b9695505050505050565b6000610602610930565b5060008051602061100e83398151915290565b61061d610979565b61062760006109ab565b565b33806106336106b5565b6001600160a01b0316146106655760405163118cdaa760e01b81526001600160a01b038216600482015260240161043b565b61066e816109ab565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b60006105ee86868686866108d2565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610696565b6106e6610979565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561072a610671565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107de60008051602061100e833981519152546001600160a01b031690565b6001600160a01b031614155b156106275760405163703e46dd60e11b815260040160405180910390fd5b61066e610979565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086a575060408051601f3d908101601f1916820190925261086791810190610fb6565b60015b61089257604051634c9c8ce360e01b81526001600160a01b038316600482015260240161043b565b60008051602061100e83398151915281146108c357604051632a87526960e21b81526004810182905260240161043b565b6108cd83836109e3565b505050565b6000858152600260209081526040808320548151601f8701849004840281018401909252858252916109259188918491908990899081908401838280828437600092019190915250899250610a39915050565b979650505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106275760405163703e46dd60e11b815260040160405180910390fd5b33610982610671565b6001600160a01b0316146106275760405163118cdaa760e01b815233600482015260240161043b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556105ce82610a77565b6109ec82610ae8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a31576108cd8282610b4d565b6105ce610bc5565b60008385148015610a48575081155b8015610a5357508251155b15610a6057506001610a6f565b610a6c85848685610be4565b90505b949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b806001600160a01b03163b600003610b1e57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161043b565b60008051602061100e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b6a9190610fcf565b600060405180830381855af49150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150610bba858383610c8e565b925050505b92915050565b34156106275760405163b398979f60e01b815260040160405180910390fd5b600060208451610bf49190610feb565b15610c0157506000610a6f565b8351600003610c1257506000610a6f565b818560005b8651811015610c8157610c2b600284610feb565b600103610c4f57610c48610c428883016020015190565b83610ced565b9150610c68565b610c6582610c608984016020015190565b610ced565b91505b60019290921c91610c7a602082610f95565b9050610c17565b5090931495945050505050565b606082610ca357610c9e82610cf9565b610ce6565b8151158015610cba57506001600160a01b0384163b155b15610ce357604051639996b31560e01b81526001600160a01b038516600482015260240161043b565b50805b9392505050565b6000610ce68383610d22565b805115610d095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b600060208284031215610d6257600080fd5b5035919050565b60008060408385031215610d7c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114610da257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dd057600080fd5b610dd983610d8b565b9150602083013567ffffffffffffffff80821115610df657600080fd5b818501915085601f830112610e0a57600080fd5b813581811115610e1c57610e1c610da7565b604051601f8201601f19908116603f01168101908382118183101715610e4457610e44610da7565b81604052828152886020848701011115610e5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060808688031215610ee057600080fd5b8535945060208601359350604086013567ffffffffffffffff811115610f0557600080fd5b610f1188828901610e7f565b96999598509660600135949350505050565b60005b83811015610f3e578181015183820152602001610f26565b50506000910152565b6020815260008251806020840152610f66816040850160208701610f23565b601f01601f19169190910160400192915050565b600060208284031215610f8c57600080fd5b610ce682610d8b565b80820180821115610bbf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610fc857600080fd5b5051919050565b60008251610fe1818460208701610f23565b9190910192915050565b60008261100857634e487b7160e01b600052601260045260246000fd5b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208a59ff38af63c8a0ca256bb007b725d98ab1c290599e8cdf87bcbf2a98add93164736f6c63430008190033')) def test_get_block(self): block = self.web3.eth.get_block('latest') diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index 5a5bb8e54..6884c33c6 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -362,9 +362,9 @@ fn test_sys_tx_gas_usage_effect_on_block_gas_limit() { assert_eq!(block.header.gas_limit, ETHEREUM_BLOCK_GAS_LIMIT as _); assert!(block.header.gas_used <= block.header.gas_limit); - // In total there should only be 1135 transactions 1 is system tx others are contract calls + // In total there should only be 1134 transactions 1 is system tx others are contract calls assert!( - block.transactions.hashes().len() == 1135, + block.transactions.hashes().len() == 1134, "Some transactions should be dropped because of gas limit" ); } From c9eb25823f35f288f20ffd01bad3f68259ded9a2 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 16:15:03 +0300 Subject: [PATCH 26/31] Fix mock genesis --- resources/genesis/mock/evm.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/resources/genesis/mock/evm.json b/resources/genesis/mock/evm.json index 2018f459b..8f9dfc31a 100644 --- a/resources/genesis/mock/evm.json +++ b/resources/genesis/mock/evm.json @@ -68,7 +68,17 @@ { "address": "0x3100000000000000000000000000000000000002", "balance": "0x115EEC47F6CF7E35000000", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033" + "code": "0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033", + "storage": + { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" : "0x3200000000000000000000000000000000000002", + "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" : "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "address": "0x3200000000000000000000000000000000000002", + "balance": "0x00", + "code": "0x6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033" } ], "chain_id": 5655, From 4109384b3986e81e85807e816c94ec92b4ae96ed Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 16:17:17 +0300 Subject: [PATCH 27/31] Push proxy impl bridge to sys tx tests config --- crates/evm/src/tests/sys_tx_tests.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index 6884c33c6..e4a3da048 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -493,8 +493,19 @@ fn config_push_contracts(config: &mut EvmConfig) { config.data.push(AccountData::new( Bridge::address(), U256::from_str("0x115EEC47F6CF7E35000000").unwrap(), - Bytes::from_static(&hex!("6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461033a578063dd95c7c614610362578063e30c397814610382578063e613ae00146103a2578063ec6925a7146103bd578063f2fde38b146103d857600080fd5b80638e19899e146102b25780639f963f59146102c5578063b3ab15fb146102e5578063b93780f614610305578063d1c444561461031a57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e14610201578063715018a614610231578063781952a81461024657806379ba50971461025b57806387f8bf56146102705780638da5cb5b1461029257600080fd5b8063158ef93e1461013a57806343e31687146101705780634507fc6914610194578063570ca735146101b657806359c19cee146101ee575b600080fd5b34801561014657600080fd5b5060015461015b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561017c57600080fd5b5061018660035481565b604051908152602001610167565b3480156101a057600080fd5b506101b46101af366004611ec0565b6103f8565b005b3480156101c257600080fd5b506002546101d6906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b6101b46101fc366004611f48565b61064e565b34801561020d57600080fd5b5061015b61021c366004611fbd565b60066020526000908152604090205460ff1681565b34801561023d57600080fd5b506101b461075e565b34801561025257600080fd5b50600754610186565b34801561026757600080fd5b506101b46107d4565b34801561027c57600080fd5b5061028561089a565b6040516101679190611fd6565b34801561029e57600080fd5b506000546101d6906001600160a01b031681565b6101b46102c0366004611fbd565b610928565b3480156102d157600080fd5b506101b46102e0366004612025565b6109f1565b3480156102f157600080fd5b506101b4610300366004612099565b610b24565b34801561031157600080fd5b50610285610ba3565b34801561032657600080fd5b50610186610335366004611fbd565b610bb0565b34801561034657600080fd5b506101d673deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036e57600080fd5b506101b461037d3660046120b4565b610bd1565b34801561038e57600080fd5b506001546101d6906001600160a01b031681565b3480156103ae57600080fd5b506101d66001603160981b0181565b3480156103c957600080fd5b50610186662386f26fc1000081565b3480156103e457600080fd5b506101b46103f3366004612099565b611376565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104605760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b600154600160a01b900460ff16156104ba5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610457565b8160000361050a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b600085900361055b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6001805460ff60a01b1916600160a01b179055600461057b868883612191565b506005610589848683612191565b5060038290556002805473deaddeaddeaddeaddeaddeaddeaddeaddeaddead6001600160a01b03199182168117909255600080549091166001600160a01b0384161781556040805191825260208201929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34868686868660405161063e95949392919061227b565b60405180910390a1505050505050565b61065f81662386f26fc100006122cb565b34146106a75760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b60075460005b828110156107585760078484838181106106c9576106c96122e2565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b84848381811061071e5761071e6122e2565b90506020020135828461073191906122f8565b604080519283526020830191909152429082015260600160405180910390a16001016106ad565b50505050565b6000546001600160a01b031633146107885760405162461bcd60e51b81526004016104579061230b565b600080546001600160a01b03191681556040805182815260208101929092527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1565b6001546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742070656e64696e67206f776e657200000000006044820152606401610457565b60008054600180546001600160a01b03198084166001600160a01b038084169190911786559116909155604080519190921680825260208201939093527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091015b60405180910390a150565b600580546108a790612106565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390612106565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b505050505081565b662386f26fc1000034146109785760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610457565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6000546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016104579061230b565b80600003610a6b5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f7420626520300000000000006044820152606401610457565b6000849003610abc5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d70747900006044820152606401610457565b6004610ac9858783612191565b506005610ad7838583612191565b5060038190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3490610b15908790879087908790879061227b565b60405180910390a15050505050565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016104579061230b565b600280546001600160a01b0319166001600160a01b0383169081179091556040805182815260208101929092527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910161088f565b600480546108a790612106565b60078181548110610bc057600080fd5b600091825260209091200154905081565b6002546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610457565b6000610c89610c3d6020840184612338565b610c4d6040850160208601612362565b610c5a604086018661238c565b610c67606088018861238c565b610c7460808a018a61238c565b610c8460c08c0160a08d01612338565b6113fc565b60008181526006602052604090205490915060ff1615610ce15760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b6044820152606401610457565b60008181526006602052604090819020805460ff19166001179055610d4690610d0c9084018461238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061144492505050565b610d925760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610457565b610ddc610da2606084018461238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e892505050565b610e285760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610457565b6000610e74610e3a604085018561238c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061157f92505050565b91505080600114610ec05760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610457565b610f0c610ed0608085018561238c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611596915050565b610f625760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610457565b6001603160981b01634ffd344a60e085013584610f8260c088018861238c565b8861010001356040518663ffffffff1660e01b8152600401610fa89594939291906123d3565b602060405180830381865afa158015610fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe99190612405565b6110355760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610457565b6000611081611047608086018661238c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061160c915050565b9050600061108e8261157f565b91505060035460026110a091906122f8565b81146110e65760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610457565b60006110f4836003546116ef565b905060006004805461110590612106565b9150600090506111168382846118b9565b90506111ac816004805461112990612106565b80601f016020809104026020016040519081016040528092919081815260200182805461115590612106565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505061197d565b6111f15760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610457565b60006112206112018460146122f8565b61120c8560146122f8565b86516112189190612427565b8691906118b9565b9050611233816005805461112990612106565b6112775760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610457565b600061128285611a3f565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611321576040519150601f19603f3d011682016040523d82523d6000602084013e611326565b606091505b50509050806113695760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610457565b5050505050505050505050565b6000546001600160a01b031633146113a05760405162461bcd60e51b81526004016104579061230b565b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278910161088f565b60006114368a8a8a8a8a8a8a8a8a6040516020016114229998979695949392919061243a565b604051602081830303815290604052611a75565b9a9950505050505050505050565b60008060006114528461157f565b9092509050801580611465575060001982145b15611474575060009392505050565b60006114818360016122f8565b905060005b828110156114db57855182106114a25750600095945050505050565b60006114ae8784611a9c565b905060001981036114c6575060009695505050505050565b6114d081846122f8565b925050600101611486565b5093519093149392505050565b60008060006114f68461157f565b9092509050801580611509575060001982145b15611518575060009392505050565b60006115258360016122f8565b905060005b828110156114db57855182106115465750600095945050505050565b60006115528784611ae5565b9050600019810361156a575060009695505050505050565b61157481846122f8565b92505060010161152a565b60008061158d836000611b49565b91509150915091565b6000816000036115a857506000611606565b6000805b838110156115ff57845182106115c757600092505050611606565b60006115d38684611ced565b905060001981036115ea5760009350505050611606565b6115f481846122f8565b9250506001016115ac565b5083511490505b92915050565b606060008060005b84811015611685576116268683611ced565b925060001983036116715760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b61167b83836122f8565b9150600101611614565b506116908582611ced565b915060001982036116db5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610457565b6116e68582846118b9565b95945050505050565b60606000806116fd8561157f565b90925090506001820161175d5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610457565b80841061179f5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610457565b6000806117ad8460016122f8565b905060005b86811015611838576117c48883611b49565b90955092506001830161180e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b8261181a8660016122f8565b61182491906122f8565b61182e90836122f8565b91506001016117b2565b506118438782611b49565b90945091506001820161188d5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610457565b6118ae8161189b86856122f8565b6118a69060016122f8565b8991906118b9565b979650505050505050565b6060816000036118d85750604080516020810190915260008152611976565b60006118e483856122f8565b905083811180156118f6575080855110155b6119385760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610457565b604051915082604083010160405282825283850182038460208701018481015b8082101561197157815183830152602082019150611958565b505050505b9392505050565b600081518351146119c75760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b6044820152606401610457565b825160005b81811015611a34578381815181106119e6576119e66122e2565b602001015160f81c60f81b6001600160f81b031916858281518110611a0d57611a0d6122e2565b01602001516001600160f81b03191614611a2c57600092505050611606565b6001016119cc565b506001949350505050565b60008060048054611a4f90612106565b915060009050611a61848360146118b9565b611a6a906124a2565b60601c949350505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aab8585611d8b565b909250905060018201611ac45760001992505050611606565b80611ad08360256122f8565b611ada91906122f8565b6116e69060046122f8565b6000611af28260096122f8565b83511015611b035750600019611606565b600080611b1a85611b158660086122f8565b611b49565b909250905060018201611b335760001992505050611606565b80611b3f8360096122f8565b6116e691906122f8565b6000806000611b588585611dcd565b90508060ff16600003611b8d576000858581518110611b7957611b796122e2565b016020015190935060f81c9150611ce69050565b83611b998260016124de565b60ff16611ba691906122f8565b85511015611bbd5760001960009250925050611ce6565b60008160ff16600203611c0157611bf6611be2611bdb8760016122f8565b8890611e53565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cdc565b8160ff16600403611c5057611c43611c1d611bdb8760016122f8565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cdc565b8160ff16600803611cdc57611ccf611c6c611bdb8760016122f8565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cfc8585611b49565b909250905060018201611d155760001992505050611606565b600080611d238460016122f8565b905060005b83811015611d8057611d3a8883611b49565b909550925060018301611d565760001995505050505050611606565b82611d628660016122f8565b611d6c91906122f8565b611d7690836122f8565b9150600101611d28565b509695505050505050565b600080611d998360256122f8565b84511015611dae575060001990506000611ce6565b600080611dc086611b158760246122f8565b9097909650945050505050565b6000828281518110611de157611de16122e2565b016020015160f81c60ff03611df857506008611606565b828281518110611e0a57611e0a6122e2565b016020015160f81c60fe03611e2157506004611606565b828281518110611e3357611e336122e2565b016020015160f81c60fd03611e4a57506002611606565b50600092915050565b60006119768383016020015190565b60008083601f840112611e7457600080fd5b50813567ffffffffffffffff811115611e8c57600080fd5b602083019150836020828501011115611ce657600080fd5b80356001600160a01b0381168114611ebb57600080fd5b919050565b60008060008060008060808789031215611ed957600080fd5b863567ffffffffffffffff80821115611ef157600080fd5b611efd8a838b01611e62565b90985096506020890135915080821115611f1657600080fd5b50611f2389828a01611e62565b90955093505060408701359150611f3c60608801611ea4565b90509295509295509295565b60008060208385031215611f5b57600080fd5b823567ffffffffffffffff80821115611f7357600080fd5b818501915085601f830112611f8757600080fd5b813581811115611f9657600080fd5b8660208260051b8501011115611fab57600080fd5b60209290920196919550909350505050565b600060208284031215611fcf57600080fd5b5035919050565b60006020808352835180602085015260005b8181101561200457858101830151858201604001528201611fe8565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060008060006060868803121561203d57600080fd5b853567ffffffffffffffff8082111561205557600080fd5b61206189838a01611e62565b9097509550602088013591508082111561207a57600080fd5b5061208788828901611e62565b96999598509660400135949350505050565b6000602082840312156120ab57600080fd5b61197682611ea4565b6000602082840312156120c657600080fd5b813567ffffffffffffffff8111156120dd57600080fd5b8201610120818503121561197657600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061211a57607f821691505b60208210810361213a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561218c576000816000526020600020601f850160051c810160208610156121695750805b601f850160051c820191505b8181101561218857828155600101612175565b5050505b505050565b67ffffffffffffffff8311156121a9576121a96120f0565b6121bd836121b78354612106565b83612140565b6000601f8411600181146121f157600085156121d95750838201355b600019600387901b1c1916600186901b17835561224b565b600083815260209020601f19861690835b828110156122225786850135825560209485019460019092019101612202565b508682101561223f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061228f606083018789612252565b82810360208401526122a2818688612252565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611606576116066122b5565b634e487b7160e01b600052603260045260246000fd5b80820180821115611606576116066122b5565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b60006020828403121561234a57600080fd5b81356001600160e01b03198116811461197657600080fd5b60006020828403121561237457600080fd5b81356001600160f01b03198116811461197657600080fd5b6000808335601e198436030181126123a357600080fd5b83018035915067ffffffffffffffff8211156123be57600080fd5b602001915036819003821315611ce657600080fd5b8581528460208201526080604082015260006123f3608083018587612252565b90508260608301529695505050505050565b60006020828403121561241757600080fd5b8151801515811461197657600080fd5b81810381811115611606576116066122b5565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a82375087810190506006810160008152868882375093169390920160068101939093525050600a01979650505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156124d65780818460140360031b1b83161693505b505050919050565b60ff8181168382160190811115611606576116066122b556fea26469706673582212208ac886a40f4e63c08869cffdbd467cd0915776904e3e07abc50ccf0e78458f5d64736f6c63430008190033")), + Bytes::from_static(&hex!("6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212201698835cd7a9e8303f44009c3f144a4dbbfa3ab8ec0bca6489bb06bb1bda401164736f6c63430008180033")), + 0, + [ + (U256::from_be_slice(&hex!("360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc")), U256::from_be_slice(&hex!("3200000000000000000000000000000000000002"))), + (U256::from_be_slice(&hex!("9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300")), U256::from_be_slice(&hex!("f39fd6e51aad88f6f4ce6ab8827279cfffb92266"))), + ].into_iter().collect(), + )); + + config.data.push(AccountData::new( + address!("3200000000000000000000000000000000000002"), + U256::ZERO, + Bytes::from_static(&hex!("6080604052600436106101665760003560e01c80638da5cb5b116100d1578063d1c444561161008a578063e30c397811610064578063e30c3978146103ff578063e613ae0014610414578063ec6925a71461042f578063f2fde38b1461044a57600080fd5b8063d1c4445614610397578063d761753e146103b7578063dd95c7c6146103df57600080fd5b80638da5cb5b146102e95780638e19899e146102fe5780639f963f5914610311578063ad3cb1cc14610331578063b3ab15fb14610362578063b93780f61461038257600080fd5b806359c19cee1161012357806359c19cee146102455780635e0e5b3e14610258578063715018a614610288578063781952a81461029d57806379ba5097146102b257806387f8bf56146102c757600080fd5b8063158ef93e1461016b578063412601371461019a57806343e31687146101bc5780634f1ef286146101e057806352d1902d146101f3578063570ca73514610208575b600080fd5b34801561017757600080fd5b506000546101859060ff1681565b60405190151581526020015b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046122e2565b61046a565b005b3480156101c857600080fd5b506101d260015481565b604051908152602001610191565b6101ba6101ee366004612388565b6106ae565b3480156101ff57600080fd5b506101d26106cd565b34801561021457600080fd5b5060005461022d9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ba61025336600461244a565b6106ea565b34801561026457600080fd5b506101856102733660046124bf565b60046020526000908152604090205460ff1681565b34801561029457600080fd5b506101ba6107fa565b3480156102a957600080fd5b506005546101d2565b3480156102be57600080fd5b506101ba61080e565b3480156102d357600080fd5b506102dc610856565b6040516101919190612528565b3480156102f557600080fd5b5061022d6108e4565b6101ba61030c3660046124bf565b610919565b34801561031d57600080fd5b506101ba61032c3660046122e2565b6109e2565b34801561033d57600080fd5b506102dc604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561036e57600080fd5b506101ba61037d36600461253b565b610ae4565b34801561038e57600080fd5b506102dc610b55565b3480156103a357600080fd5b506101d26103b23660046124bf565b610b62565b3480156103c357600080fd5b5061022d73deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b3480156103eb57600080fd5b506101ba6103fa366004612556565b610b83565b34801561040b57600080fd5b5061022d61132d565b34801561042057600080fd5b5061022d6001603160981b0181565b34801561043b57600080fd5b506101d2662386f26fc1000081565b34801561045657600080fd5b506101ba61046536600461253b565b611356565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104d25760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff16156105255760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a65640060448201526064016104c9565b806000036105755760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b60008490036105c65760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6000805460ff1916600117905560026105e085878361261c565b5060036105ee83858361261c565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c34858585858560405161069f959493929190612706565b60405180910390a15050505050565b6106b66113db565b6106bf82611480565b6106c98282611488565b5050565b60006106d761154a565b5060008051602061298b83398151915290565b6106fb81662386f26fc10000612756565b34146107435760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b60055460005b828110156107f45760058484838181106107655761076561276d565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106107ba576107ba61276d565b9050602002013582846107cd9190612783565b604080519283526020830191909152429082015260600160405180910390a1600101610749565b50505050565b610802611593565b61080c60006115c5565b565b338061081861132d565b6001600160a01b03161461084a5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104c9565b610853816115c5565b50565b6003805461086390612592565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90612592565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146109695760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016104c9565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b6109ea611593565b80600003610a3a5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f74206265203000000000000060448201526064016104c9565b6000849003610a8b5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d707479000060448201526064016104c9565b6002610a9885878361261c565b506003610aa683858361261c565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061069f9087908790879087908790612706565b610aec611593565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461086390612592565b60058181548110610b7257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610be25760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016104c9565b6000610c40610bf46020840184612796565b610c0460408501602086016127c0565b610c1160408601866127ea565b610c1e60608801886127ea565b610c2b60808a018a6127ea565b610c3b60c08c0160a08d01612796565b6115fd565b60008181526004602052604090205490915060ff1615610c985760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b60448201526064016104c9565b60008181526004602052604090819020805460ff19166001179055610cfd90610cc3908401846127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061164592505050565b610d495760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d617474656400000060448201526064016104c9565b610d93610d5960608401846127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e992505050565b610ddf5760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d6174746564000060448201526064016104c9565b6000610e2b610df160408501856127ea565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178092505050565b91505080600114610e775760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b60448201526064016104c9565b610ec3610e8760808501856127ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250611797915050565b610f195760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b60648201526084016104c9565b6001603160981b01634ffd344a60e085013584610f3960c08801886127ea565b8861010001356040518663ffffffff1660e01b8152600401610f5f959493929190612831565b602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612863565b610fec5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b000000000060448201526064016104c9565b6000611038610ffe60808601866127ea565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061180d915050565b9050600061104582611780565b91505060015460026110579190612783565b811461109d5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b60448201526064016104c9565b60006110ab836001546118f0565b90506000600280546110bc90612592565b9150600090506110cd838284611aba565b905061116381600280546110e090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612592565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b5050505050611b7e565b6111a85760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b60448201526064016104c9565b60006111d76111b8846014612783565b6111c3856014612783565b86516111cf9190612885565b869190611aba565b90506111ea81600380546110e090612592565b61122e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b60448201526064016104c9565b600061123985611c40565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d80600081146112d8576040519150601f19603f3d011682016040523d82523d6000602084013e6112dd565b606091505b50509050806113205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016104c9565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610909565b61135e611593565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113a26108e4565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061146257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661145660008051602061298b833981519152546001600160a01b031690565b6001600160a01b031614155b1561080c5760405163703e46dd60e11b815260040160405180910390fd5b610853611593565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e2575060408051601f3d908101601f191682019092526114df91810190612898565b60015b61150a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016104c9565b60008051602061298b833981519152811461153b57604051632a87526960e21b8152600481018290526024016104c9565b6115458383611c76565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080c5760405163703e46dd60e11b815260040160405180910390fd5b3361159c6108e4565b6001600160a01b03161461080c5760405163118cdaa760e01b81523360048201526024016104c9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106c982611ccc565b60006116378a8a8a8a8a8a8a8a8a604051602001611623999897969594939291906128b1565b604051602081830303815290604052611d3d565b9a9950505050505050505050565b600080600061165384611780565b9092509050801580611666575060001982145b15611675575060009392505050565b6000611682836001612783565b905060005b828110156116dc57855182106116a35750600095945050505050565b60006116af8784611d64565b905060001981036116c7575060009695505050505050565b6116d18184612783565b925050600101611687565b5093519093149392505050565b60008060006116f784611780565b909250905080158061170a575060001982145b15611719575060009392505050565b6000611726836001612783565b905060005b828110156116dc57855182106117475750600095945050505050565b60006117538784611dad565b9050600019810361176b575060009695505050505050565b6117758184612783565b92505060010161172b565b60008061178e836000611e11565b91509150915091565b6000816000036117a957506000611807565b6000805b8381101561180057845182106117c857600092505050611807565b60006117d48684611fb5565b905060001981036117eb5760009350505050611807565b6117f58184612783565b9250506001016117ad565b5083511490505b92915050565b606060008060005b84811015611886576118278683611fb5565b925060001983036118725760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b61187c8383612783565b9150600101611815565b506118918582611fb5565b915060001982036118dc5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b60448201526064016104c9565b6118e7858284611aba565b95945050505050565b60606000806118fe85611780565b90925090506001820161195e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016104c9565b8084106119a05760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b60448201526064016104c9565b6000806119ae846001612783565b905060005b86811015611a39576119c58883611e11565b909550925060018301611a0f5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b82611a1b866001612783565b611a259190612783565b611a2f9083612783565b91506001016119b3565b50611a448782611e11565b909450915060018201611a8e5760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b60448201526064016104c9565b611aaf81611a9c8685612783565b611aa7906001612783565b899190611aba565b979650505050505050565b606081600003611ad95750604080516020810190915260008152611b77565b6000611ae58385612783565b90508381118015611af7575080855110155b611b395760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b60448201526064016104c9565b604051915082604083010160405282825283850182038460208701018481015b80821015611b7257815183830152602082019150611b59565b505050505b9392505050565b60008151835114611bc85760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064016104c9565b825160005b81811015611c3557838181518110611be757611be761276d565b602001015160f81c60f81b6001600160f81b031916858281518110611c0e57611c0e61276d565b01602001516001600160f81b03191614611c2d57600092505050611807565b600101611bcd565b506001949350505050565b60008060028054611c5090612592565b915060009050611c6284836014611aba565b611c6b90612919565b60601c949350505050565b611c7f82612053565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cc45761154582826120b8565b6106c9612125565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611d738585612144565b909250905060018201611d8c5760001992505050611807565b80611d98836025612783565b611da29190612783565b6118e7906004612783565b6000611dba826009612783565b83511015611dcb5750600019611807565b600080611de285611ddd866008612783565b611e11565b909250905060018201611dfb5760001992505050611807565b80611e07836009612783565b6118e79190612783565b6000806000611e208585612186565b90508060ff16600003611e55576000858581518110611e4157611e4161276d565b016020015190935060f81c9150611fae9050565b83611e61826001612955565b60ff16611e6e9190612783565b85511015611e855760001960009250925050611fae565b60008160ff16600203611ec957611ebe611eaa611ea3876001612783565b889061220c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611fa4565b8160ff16600403611f1857611f0b611ee5611ea3876001612783565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611fa4565b8160ff16600803611fa457611f97611f34611ea3876001612783565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611fc48585611e11565b909250905060018201611fdd5760001992505050611807565b600080611feb846001612783565b905060005b83811015612048576120028883611e11565b90955092506001830161201e5760001995505050505050611807565b8261202a866001612783565b6120349190612783565b61203e9083612783565b9150600101611ff0565b509695505050505050565b806001600160a01b03163b60000361208957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104c9565b60008051602061298b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120d5919061296e565b600060405180830381855af49150503d8060008114612110576040519150601f19603f3d011682016040523d82523d6000602084013e612115565b606091505b50915091506118e785838361221b565b341561080c5760405163b398979f60e01b815260040160405180910390fd5b600080612152836025612783565b84511015612167575060001990506000611fae565b60008061217986611ddd876024612783565b9097909650945050505050565b600082828151811061219a5761219a61276d565b016020015160f81c60ff036121b157506008611807565b8282815181106121c3576121c361276d565b016020015160f81c60fe036121da57506004611807565b8282815181106121ec576121ec61276d565b016020015160f81c60fd0361220357506002611807565b50600092915050565b6000611b778383016020015190565b6060826122305761222b82612277565b611b77565b815115801561224757506001600160a01b0384163b155b1561227057604051639996b31560e01b81526001600160a01b03851660048201526024016104c9565b5080611b77565b8051156122875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f8401126122b257600080fd5b50813567ffffffffffffffff8111156122ca57600080fd5b602083019150836020828501011115611fae57600080fd5b6000806000806000606086880312156122fa57600080fd5b853567ffffffffffffffff8082111561231257600080fd5b61231e89838a016122a0565b9097509550602088013591508082111561233757600080fd5b50612344888289016122a0565b96999598509660400135949350505050565b80356001600160a01b038116811461236d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239b57600080fd5b6123a483612356565b9150602083013567ffffffffffffffff808211156123c157600080fd5b818501915085601f8301126123d557600080fd5b8135818111156123e7576123e7612372565b604051601f8201601f19908116603f0116810190838211818310171561240f5761240f612372565b8160405282815288602084870101111561242857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806020838503121561245d57600080fd5b823567ffffffffffffffff8082111561247557600080fd5b818501915085601f83011261248957600080fd5b81358181111561249857600080fd5b8660208260051b85010111156124ad57600080fd5b60209290920196919550909350505050565b6000602082840312156124d157600080fd5b5035919050565b60005b838110156124f35781810151838201526020016124db565b50506000910152565b600081518084526125148160208601602086016124d8565b601f01601f19169290920160200192915050565b602081526000611b7760208301846124fc565b60006020828403121561254d57600080fd5b611b7782612356565b60006020828403121561256857600080fd5b813567ffffffffffffffff81111561257f57600080fd5b82016101208185031215611b7757600080fd5b600181811c908216806125a657607f821691505b6020821081036125c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611545576000816000526020600020601f850160051c810160208610156125f55750805b601f850160051c820191505b8181101561261457828155600101612601565b505050505050565b67ffffffffffffffff83111561263457612634612372565b612648836126428354612592565b836125cc565b6000601f84116001811461267c57600085156126645750838201355b600019600387901b1c1916600186901b1783556126d6565b600083815260209020601f19861690835b828110156126ad578685013582556020948501946001909201910161268d565b50868210156126ca5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061271a6060830187896126dd565b828103602084015261272d8186886126dd565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761180757611807612740565b634e487b7160e01b600052603260045260246000fd5b8082018082111561180757611807612740565b6000602082840312156127a857600080fd5b81356001600160e01b031981168114611b7757600080fd5b6000602082840312156127d257600080fd5b81356001600160f01b031981168114611b7757600080fd5b6000808335601e1984360301811261280157600080fd5b83018035915067ffffffffffffffff82111561281c57600080fd5b602001915036819003821315611fae57600080fd5b8581528460208201526080604082015260006128516080830185876126dd565b90508260608301529695505050505050565b60006020828403121561287557600080fd5b81518015158114611b7757600080fd5b8181038181111561180757611807612740565b6000602082840312156128aa57600080fd5b5051919050565b6001600160e01b03198a811682526001600160f01b03198a166004830152600090888a60068501378883016006810160008152888a823750878101905060068101600081528688823750931692909301600681019290925250600a0198975050505050505050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561294d5780818460140360031b1b83161693505b505050919050565b60ff818116838216019081111561180757611807612740565b600082516129808184602087016124d8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220182f4d2f08ca4c4ec067af41dedeedc7f5d8b29e5b5a7e0810b80d2efbad778064736f6c63430008190033")), 0, - HashMap::new(), + HashMap::new() )); } From e0ed4114153a5d1bc9632473579c8bcde09aaa0a Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 16:45:32 +0300 Subject: [PATCH 28/31] Fix test issues --- bin/citrea/tests/e2e/mod.rs | 2 +- bin/citrea/tests/evm/ethers_js/test.js | 2 +- crates/evm/src/tests/sys_tx_tests.rs | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/citrea/tests/e2e/mod.rs b/bin/citrea/tests/e2e/mod.rs index 5156d0c8b..a2d08a25f 100644 --- a/bin/citrea/tests/e2e/mod.rs +++ b/bin/citrea/tests/e2e/mod.rs @@ -2097,7 +2097,7 @@ async fn transaction_failing_on_l1_is_removed_from_mempool() -> Result<(), anyho let random_wallet_address = random_wallet.address(); - let second_block_base_fee = 768595319; + let second_block_base_fee = 768592592; let _pending = seq_test_client .send_eth( diff --git a/bin/citrea/tests/evm/ethers_js/test.js b/bin/citrea/tests/evm/ethers_js/test.js index 232d833d3..5437cfd60 100644 --- a/bin/citrea/tests/evm/ethers_js/test.js +++ b/bin/citrea/tests/evm/ethers_js/test.js @@ -120,7 +120,7 @@ describe("RpcTests", function() { it("getStorage returns the correct storage", async function() { // 2rd slot of Bridge is 'operator' and should be the system caller address on its own - let storage = await provider.getStorage("0x3100000000000000000000000000000000000002", 1); + let storage = await provider.getStorage("0x3100000000000000000000000000000000000002", 0); expect(storage).to.equal("0x0000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddeaddead01"); }); diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index e4a3da048..a15dec683 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -73,7 +73,7 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 425628, + cumulative_gas_used: 385984, logs: vec![ Log { address: Bridge::address(), @@ -91,9 +91,9 @@ fn test_sys_bitcoin_light_client() { } ] }, - gas_used: 298615, + gas_used: 258971, log_index_start: 1, - diff_size: 924, + diff_size: 744, } ] ); From 285d1cf535f9d1b3d0cc53c1d0d0627aaacfc220 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 17:20:24 +0300 Subject: [PATCH 29/31] fix test --- bin/citrea/tests/e2e/mod.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/citrea/tests/e2e/mod.rs b/bin/citrea/tests/e2e/mod.rs index a2d08a25f..7797824d9 100644 --- a/bin/citrea/tests/e2e/mod.rs +++ b/bin/citrea/tests/e2e/mod.rs @@ -1776,28 +1776,28 @@ async fn test_system_tx_effect_on_block_gas_limit() -> Result<(), anyhow::Error> let seq_port = seq_port_rx.await.unwrap(); let seq_test_client = make_test_client(seq_port).await; - // sys tx use L1BlockHash(43615 + 73581) + Bridge(298471) = 415667 gas + // sys tx use L1BlockHash(48522 + 78491) + Bridge(258971) = 385984 gas // the block gas limit is 1_500_000 because the system txs gas limit is 1_500_000 (decided with @eyusufatik and @okkothejawa as bridge init takes 1M gas) - // 1500000 - 415667 = 1084333 gas left in block - // 1084333 / 21000 = 51,6... so 51 ether transfer transactions can be included in the block + // 1500000 - 385984 = 1114016 gas left in block + // 1114016 / 21000 = 53,04... so 53 ether transfer transactions can be included in the block - // send 51 ether transfer transactions + // send 53 ether transfer transactions let addr = Address::from_str("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266").unwrap(); - for _ in 0..50 { + for _ in 0..52 { let _pending = seq_test_client .send_eth(addr, None, None, None, 0u128) .await .unwrap(); } - // 51th tx should be the last tx in the soft batch + // 53th tx should be the last tx in the soft batch let last_in_tx = seq_test_client .send_eth(addr, None, None, None, 0u128) .await; - // 52th tx should not be in soft batch + // 54th tx should not be in soft batch let not_in_tx = seq_test_client .send_eth(addr, None, None, None, 0u128) .await; From b106dc24847d3109d530e7834c7530a5d1b69f6c Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 17:30:18 +0300 Subject: [PATCH 30/31] fix ether js --- bin/citrea/tests/evm/ethers_js/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/citrea/tests/evm/ethers_js/test.js b/bin/citrea/tests/evm/ethers_js/test.js index 5437cfd60..b1e5923da 100644 --- a/bin/citrea/tests/evm/ethers_js/test.js +++ b/bin/citrea/tests/evm/ethers_js/test.js @@ -238,7 +238,7 @@ describe("RpcTests", function() { tx_receipt = await tx_response.wait(1); expect.fail('Expected an error to be thrown'); } catch (error) { - expect(error.message).to.match(/transaction execution reverted \(action="sendTransaction", data=null, reason=null, invocation=null, revert=null, transaction={ "data": "", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": "0x3100000000000000000000000000000000000002" }, receipt={ "_type": "TransactionReceipt", "blobGasPrice": null, "blobGasUsed": null, "blockHash": "0x[0-9a-fA-F]+", "blockNumber": \d+, "contractAddress": null, "cumulativeGasUsed": "21883", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "gasPrice": "1000000", "gasUsed": "21883", "hash": "0x[0-9a-fA-F]+", "index": 0, "logs": \[ ], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "root": null, "status": 0, "to": "0x3100000000000000000000000000000000000002" }, code=CALL_EXCEPTION, version=6\.12\.1\)/); + expect(error.message).to.match(/transaction execution reverted \(action="sendTransaction", data=null, reason=null, invocation=null, revert=null, transaction={ "data": "", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": "0x3100000000000000000000000000000000000002" }, receipt={ "_type": "TransactionReceipt", "blobGasPrice": null, "blobGasUsed": null, "blockHash": "0x[0-9a-fA-F]+", "blockNumber": \d+, "contractAddress": null, "cumulativeGasUsed": "26805", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "gasPrice": "1000000", "gasUsed": "26805", "hash": "0x[0-9a-fA-F]+", "index": 0, "logs": \[ ], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "root": null, "status": 0, "to": "0x3100000000000000000000000000000000000002" }, code=CALL_EXCEPTION, version=6\.12\.1\)/); } }); From 93a0661d10fe495ce56ad731bf605f114e7d3916 Mon Sep 17 00:00:00 2001 From: okkothejawa <103260942+okkothejawa@users.noreply.github.com> Date: Thu, 27 Jun 2024 17:45:07 +0300 Subject: [PATCH 31/31] fix test_gas_limit_too_high test --- bin/citrea/tests/e2e/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/citrea/tests/e2e/mod.rs b/bin/citrea/tests/e2e/mod.rs index 7797824d9..b125a8907 100644 --- a/bin/citrea/tests/e2e/mod.rs +++ b/bin/citrea/tests/e2e/mod.rs @@ -3028,7 +3028,7 @@ async fn test_gas_limit_too_high() { let target_gas_limit: u64 = 30_000_000; let transfer_gas_limit = 21_000; - let system_txs_gas_used = 415_811; + let system_txs_gas_used = 385984; let tx_count = (target_gas_limit - system_txs_gas_used).div_ceil(transfer_gas_limit); let addr = Address::from_str("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266").unwrap();