From 44c10f091b86f04dcd94809b0dd5b4fc2b8ce1a8 Mon Sep 17 00:00:00 2001 From: erdkocak <93616117+erdkocak@users.noreply.github.com> Date: Thu, 1 Aug 2024 00:33:21 +0300 Subject: [PATCH] Added optimized byte comparison function to Bridge contract (#930) * Added optimized byte comparison function * Ahmet's optimization * fixed offset <= len * make genesis * edge case tests added --- .../out/Bridge.sol/Bridge.json | 2 +- .../src/evm/system_contracts/src/Bridge.sol | 34 ++++++++++++++----- .../evm/system_contracts/test/Bridge.t.sol | 31 ++++++++++++++--- resources/genesis/bitcoin-regtest/evm.json | 2 +- resources/genesis/mock-dockerized/evm.json | 2 +- resources/genesis/mock/evm.json | 2 +- .../demo-tests/bitcoin-regtest/evm.json | 2 +- resources/test-data/demo-tests/mock/evm.json | 2 +- .../evm.json | 2 +- .../evm.json | 2 +- .../test-data/integration-tests/evm.json | 2 +- 11 files changed, 60 insertions(+), 23 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 764f90525..b891615a0 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"}],"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":"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":"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":"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"}]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b5061244b8061001f6000396000f3fe6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56","sourceMap":"430:8760:33:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56","sourceMap":"430:8760:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:23;;;;;;;;;;-1:-1:-1;1018:23:33;;;;;;;;;;;179:14:36;;172:22;154:41;;142:2;127:18;1018:23:33;;;;;;;;2269:810;;;;;;;;;;-1:-1:-1;2269:810:33;;;;;:::i;:::-;;:::i;:::-;;1133:32;;;;;;;;;;;;;;;;;;;1535:25:36;;;1523:2;1508:18;1133:32:33;1389:177:36;1104:23:33;;;;;;;;;;-1:-1:-1;1104:23:33;;;;;;;-1:-1:-1;;;;;1104:23:33;;;;;;-1:-1:-1;;;;;1735:32:36;;;1717:51;;1705:2;1690:18;1104:23:33;1571:203:36;7309:440:33;;;;;;:::i;:::-;;:::i;1239:43::-;;;;;;;;;;-1:-1:-1;1239:43:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;3155:101:29;;;;;;;;;;;;;:::i;7812:108:33:-;;;;;;;;;;-1:-1:-1;7891:15:33;:22;7812:108;;2774:229:28;;;;;;;;;;;;;:::i;1203:25:33:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2441:144:29:-;;;;;;;;;;;;;:::i;6763:301:33:-;;;;;;:::i;:::-;;:::i;3572:505::-;;;;;;;;;;-1:-1:-1;3572:505:33;;;;;:::i;:::-;;:::i;8063:147::-;;;;;;;;;;-1:-1:-1;8063:147:33;;;;;:::i;:::-;;:::i;1171:26::-;;;;;;;;;;;;;:::i;1288:32::-;;;;;;;;;;-1:-1:-1;1288:32:33;;;;;:::i;:::-;;:::i;920:91::-;;;;;;;;;;;;968:42;920:91;;4324:2185;;;;;;;;;;-1:-1:-1;4324:2185:33;;;;;:::i;:::-;;:::i;1680:168:28:-;;;;;;;;;;;;;:::i;793:121:33:-;;;;;;;;;;;;-1:-1:-1;;;;;793:121:33;;1047:51;;;;;;;;;;;;1088:10;1047:51;;2041:247:28;;;;;;;;;;-1:-1:-1;2041:247:28;;;;;:::i;:::-;;:::i;2269:810:33:-;1693:10;968:42;1693:27;1685:71;;;;-1:-1:-1;;;1685:71:33;;4650:2:36;1685:71:33;;;4632:21:36;4689:2;4669:18;;;4662:30;4728:33;4708:18;;;4701:61;4779:18;;1685:71:33;;;;;;;;;2417:11:::1;::::0;::::1;;2416:12;2408:56;;;::::0;-1:-1:-1;;;2408:56:33;;5010:2:36;2408:56:33::1;::::0;::::1;4992:21:36::0;5049:2;5029:18;;;5022:30;5088:33;5068:18;;;5061:61;5139:18;;2408:56:33::1;4808:355:36::0;2408:56:33::1;2482:18;2504:1;2482:23:::0;2474:62:::1;;;::::0;-1:-1:-1;;;2474:62:33;;5370:2:36;2474:62:33::1;::::0;::::1;5352:21:36::0;5409:2;5389:18;;;5382:30;5448:28;5428:18;;;5421:56;5494:18;;2474:62:33::1;5168:350:36::0;2474:62:33::1;2579:1;2554:26:::0;;;2546:69:::1;;;::::0;-1:-1:-1;;;2546:69:33;;5725:2:36;2546:69:33::1;::::0;::::1;5707:21:36::0;5764:2;5744:18;;;5737:30;5803:32;5783:18;;;5776:60;5853:18;;2546:69:33::1;5523:354:36::0;2546:69:33::1;2626:11;:18:::0;;-1:-1:-1;;2626:18:33::1;2640:4;2626:18;::::0;;2654:13:::1;:30;2670:14:::0;;2654:13;:30:::1;:::i;:::-;-1:-1:-1::0;2694:12:33::1;:28;2709:13:::0;;2694:12;:28:::1;:::i;:::-;-1:-1:-1::0;2732:17:33::1;:38:::0;;;2905:8:::1;:24:::0;;-1:-1:-1;;;;;;2905:24:33::1;::::0;::::1;::::0;;2945:42:::1;::::0;;8598:51:36;;;968:42:33::1;8680:2:36::0;8665:18;;8658:60;2945:42:33::1;::::0;8571:18:36;2945:42:33::1;;;;;;;3002:70;3022:14;;3038:13;;3053:18;3002:70;;;;;;;;;;:::i;:::-;;;;;;;;2269:810:::0;;;;;:::o;7309:440::-;7418:41;7435:17;1088:10;7418:41;:::i;:::-;7405:9;:54;7397:90;;;;-1:-1:-1;;;7397:90:33;;10014:2:36;7397:90:33;;;9996:21:36;10053:2;10033:18;;;10026:30;-1:-1:-1;;;10072:18:36;;;10065:53;10135:18;;7397:90:33;9812:347:36;7397:90:33;7513:15;:22;7497:13;7545:198;7562:28;;;7545:198;;;7611:15;7632:17;;7650:1;7632:20;;;;;;;:::i;:::-;7611:42;;;;;;;-1:-1:-1;7611:42:33;;;7632:20;7611:42;;;;7632:20;;;;;;;;;7611:42;;;;;-1:-1:-1;7672:60:33;7683:17;;7701:1;7683:20;;;;;;;:::i;:::-;;;;;;;7713:1;7705:5;:9;;;;:::i;:::-;7672:60;;;10628:25:36;;;10684:2;10669:18;;10662:34;;;;7716:15:33;10712:18:36;;;10705:34;10616:2;10601:18;7672:60:33;;;;;;;7592:3;;7545:198;;;;7387:362;7309: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:31;;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;;;;;1735:32:36;;2916:34:28;;;1717:51:36;1690:18;;2916:34:28;1571:203:36;2865:96:28;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;1203:25:33:-;;;;;;;:::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;6763:301:33:-;1088:10;6841:9;:27;6833:63;;;;-1:-1:-1;;;6833:63:33;;10014:2:36;6833:63:33;;;9996:21:36;10053:2;10033:18;;;10026:30;-1:-1:-1;;;10072:18:36;;;10065:53;10135:18;;6833:63:33;9812:347:36;6833:63:33;6922:15;:22;;6954:37;;;;;-1:-1:-1;6954:37:33;;;;;;;;;;7006:51;;;10628:25:36;;;10684:2;10669:18;;10662:34;;;7041:15:33;10712:18:36;;;10705:34;7006:51:33;;;;;;;10616:2:36;7006:51:33;;;6823:241;6763:301;:::o;3572:505::-;2334:13:29;:11;:13::i;:::-;3724:18:33::1;3746:1;3724:23:::0;3716:62:::1;;;::::0;-1:-1:-1;;;3716:62:33;;5370:2:36;3716:62:33::1;::::0;::::1;5352:21:36::0;5409:2;5389:18;;;5382:30;5448:28;5428:18;;;5421:56;5494:18;;3716:62:33::1;5168:350:36::0;3716:62:33::1;3821:1;3796:26:::0;;;3788:69:::1;;;::::0;-1:-1:-1;;;3788:69:33;;5725:2:36;3788:69:33::1;::::0;::::1;5707:21:36::0;5764:2;5744:18;;;5737:30;5803:32;5783:18;;;5776:60;5853:18;;3788:69:33::1;5523:354:36::0;3788:69:33::1;3868:13;:30;3884:14:::0;;3868:13;:30:::1;:::i;:::-;-1:-1:-1::0;3908:12:33::1;:28;3923:13:::0;;3908:12;:28:::1;:::i;:::-;-1:-1:-1::0;3946:17:33::1;:38:::0;;;4000:70:::1;::::0;::::1;::::0;::::1;::::0;4020:14;;;;4036:13;;;;3966:18;;4000:70:::1;:::i;8063:147::-:0;2334:13:29;:11;:13::i;:::-;8132:8:33::1;:20:::0;;-1:-1:-1;;;;;;8132:20:33::1;;-1:-1:-1::0;;;;;8132:20:33;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;8167:36:::1;::::0;;8183:8;;;::::1;;8598:51:36::0;;8680:2;8665:18;;8658:60;;;;8167:36:33::1;::::0;8571:18:36;8167:36:33::1;;;;;;;8063:147:::0;:::o;1171:26::-;;;;;;;:::i;1288:32::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1288:32:33;:::o;4324:2185::-;1836:8;;;;;-1:-1:-1;;;;;1836:8:33;1822:10;:22;1814:61;;;;-1:-1:-1;;;1814:61:33;;10952:2:36;1814:61:33;;;10934:21:36;10991:2;10971:18;;;10964:30;11030:28;11010:18;;;11003:56;11076:18;;1814:61:33;10750:350:36;1814:61:33;4750:13:::1;4766:84;4794:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4805:6;::::0;;;::::1;::::0;::::1;;:::i;:::-;4813:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;4820:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4828:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4839:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4766:27;:84::i;:::-;4869:18;::::0;;;:11:::1;:18;::::0;;;;;4750:100;;-1:-1:-1;4869:18:33::1;;4868:19;4860:51;;;::::0;-1:-1:-1;;;4860:51:33;;12410:2:36;4860:51:33::1;::::0;::::1;12392:21:36::0;12449:2;12429:18;;;12422:30;-1:-1:-1;;;12468:18:36;;;12461:49;12527:18;;4860:51:33::1;12208:343:36::0;4860:51:33::1;4921:18;::::0;;;:11:::1;:18;::::0;;;;;;:25;;-1:-1:-1;;4921:25:33::1;4942:4;4921:25;::::0;;4965:27:::1;::::0;4986:5:::1;::::0;;::::1;:1:::0;:5:::1;:::i;:::-;4965:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4965:20:33::1;::::0;-1:-1:-1;;;4965:27:33:i:1;:::-;4957:69;;;::::0;-1:-1:-1;;;4957:69:33;;12758:2:36;4957:69:33::1;::::0;::::1;12740:21:36::0;12797:2;12777:18;;;12770:30;12836:31;12816:18;;;12809:59;12885:18;;4957:69:33::1;12556:353:36::0;4957:69:33::1;5044:29;5066:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;5044:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5044:21:33::1;::::0;-1:-1:-1;;;5044:29:33:i:1;:::-;5036:72;;;::::0;-1:-1:-1;;;5036:72:33;;13116:2:36;5036:72:33::1;::::0;::::1;13098:21:36::0;13155:2;13135:18;;;13128:30;13194:32;13174:18;;;13167:60;13244:18;;5036:72:33::1;12914:354:36::0;5036:72:33::1;5130:13;5147:27;5168:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;5147:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5147:20:33::1;::::0;-1:-1:-1;;;5147:27:33:i:1;:::-;5127:47;;;5192:5;5201:1;5192:10;5184:45;;;::::0;-1:-1:-1;;;5184:45:33;;13475:2:36;5184:45:33::1;::::0;::::1;13457:21:36::0;13514:2;13494:18;;;13487:30;-1:-1:-1;;;13533:18:36;;;13526:52;13595:18;;5184:45:33::1;13273:346:36::0;5184:45:33::1;5298:46;5327:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5298:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5338:5:33;;-1:-1:-1;5298:28:33::1;::::0;-1:-1:-1;;5298:46:33:i:1;:::-;5290:92;;;::::0;-1:-1:-1;;;5290:92:33;;13826:2:36;5290:92:33::1;::::0;::::1;13808:21:36::0;13865:2;13845:18;;;13838:30;13904:34;13884:18;;;13877:62;-1:-1:-1;;;13955:18:36;;;13948:31;13996:19;;5290:92:33::1;13624:397:36::0;5290:92:33::1;-1:-1:-1::0;;;;;5401:28:33::1;5430:14;::::0;::::1;;5446:5:::0;5453:20:::1;;::::0;::::1;5430:1:::0;5453:20:::1;:::i;:::-;5475:1;:7;;;5401:82;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5393:122;;;::::0;-1:-1:-1;;;5393:122:33;;14974:2:36;5393:122:33::1;::::0;::::1;14956:21:36::0;15013:2;14993:18;;;14986:30;15052:29;15032:18;;;15025:57;15099:18;;5393:122:33::1;14772:351:36::0;5393:122:33::1;5526:21;5550:48;5585:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5550:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5550:48:33;-1:-1:-1;5550:34:33::1;::::0;-1:-1:-1;;5550:48:33:i:1;:::-;5526:72;;5611:15;5630:30;5651:8;5630:20;:30::i;:::-;5608:52;;;5689:17;;5709:1;5689:21;;;;:::i;:::-;5678:7;:32;5670:66;;;::::0;-1:-1:-1;;;5670:66:33;;15330:2:36;5670:66:33::1;::::0;::::1;15312:21:36::0;15369:2;15349:18;;;15342:30;-1:-1:-1;;;15388:18:36;;;15381:51;15449:18;;5670:66:33::1;15128:345:36::0;5670:66:33::1;5798:19;5820:64;5856:8;5866:17;;5820:35;:64::i;:::-;5798:86;;5894:12;5909:13;:20;;;;;:::i;:::-;::::0;-1:-1:-1;5939:27:33::1;::::0;-1:-1:-1;5969:21:33::1;:6:::0;5939:27;5909:20;5969:12:::1;:21::i;:::-;5939:51;;6008:43;6021:14;6037:13;6008:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:43::i;:::-;6000:78;;;::::0;-1:-1:-1;;;6000:78:33;;15680:2:36;6000:78:33::1;::::0;::::1;15662:21:36::0;15719:2;15699:18;;;15692:30;-1:-1:-1;;;15738:18:36;;;15731:52;15800:18;;6000:78:33::1;15478:346:36::0;6000:78:33::1;6088:20;6111:52;6124:9;:4:::0;6131:2:::1;6124:9;:::i;:::-;6152;:4:::0;6159:2:::1;6152:9;:::i;:::-;6135:6;:13;:27;;;;:::i;:::-;6111:6:::0;;:52;:12:::1;:52::i;:::-;6088:75;;6205:35;6218:7;6227:12;6205:35;;;;;:::i;:::-;6197:69;;;::::0;-1:-1:-1;;;6197:69:33;;16164:2:36;6197:69:33::1;::::0;::::1;16146:21:36::0;16203:2;16183:18;;;16176:30;-1:-1:-1;;;16222:18:36;;;16215:51;16283:18;;6197:69:33::1;15962:345:36::0;6197:69:33::1;6277:17;6297:31;6321:6;6297:23;:31::i;:::-;6344:42;::::0;;16514:25:36;;;-1:-1:-1;;;;;16575:32:36;;16570:2;16555:18;;16548:60;6370:15:33::1;16624:18:36::0;;;16617:34;6344:42:33;;16575:32:36;;-1:-1:-1;6344:42:33::1;::::0;;;;;16502:2:36;6344:42:33;;::::1;6398:12;6416:9;-1:-1:-1::0;;;;;6416:14:33::1;1088:10;6416:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6397:60;;;6475:7;6467:35;;;::::0;-1:-1:-1;;;6467:35:33;;17074:2:36;6467:35:33::1;::::0;::::1;17056:21:36::0;17113:2;17093:18;;;17086:30;-1:-1:-1;;;17132:18:36;;;17125:45;17187:18;;6467:35:33::1;16872:339:36::0;6467:35:33::1;4403:2106;;;;;;;;;;4324: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;2658:162:29:-;966:10:31;2717:7:29;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:29;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:29;;966:10:31;2763:40:29;;;1717:51:36;1690:18;;2763:40:29;1571:203:36;2472:222:28;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:28;;;2653:34;2678:8;2653:24;:34::i;:::-;2544:150;2472:222;:::o;431:320:0:-;643:7;669:75;686:7;695:4;701:3;;706:4;;712:7;;721:8;669:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:73;:75::i;:::-;662:82;431:320;-1:-1:-1;;;;;;;;;;431: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;1060:871:0:-;1147:4;1222:6;1232:1;1222:11;1218:54;;-1:-1:-1;1256:5:0;1249:12;;1218:54;1282:15;1317:9;1312:512;1336:6;1332:1;:10;1312:512;;;1436:8;:15;1425:7;:26;1421:77;;1478:5;1471:12;;;;;;1421:77;1573:16;1592:43;1617:8;1627:7;1592:24;:43::i;:::-;1573:62;;-1:-1:-1;;1653:8:0;:32;1649:83;;1712:5;1705:12;;;;;;;1649:83;1794:19;1805:8;1794:19;;:::i;:::-;;-1:-1:-1;;1344:3:0;;1312:512;;;-1:-1:-1;1909:15:0;;1898:26;;-1:-1:-1;1060:871:0;;;;;:::o;3420:579::-;3513:12;3537;3563:15;3598:10;3593:221;3619:6;3614:2;:11;3593:221;;;3655:43;3680:8;3690:7;3655:24;:43::i;:::-;3648:50;;-1:-1:-1;;3720:4:0;:28;3712:62;;;;-1:-1:-1;;;3712:62:0;;18276:2:36;3712:62:0;;;18258:21:36;18315:2;18295:18;;;18288:30;-1:-1:-1;;;18334:18:36;;;18327:51;18395:18;;3712:62:0;18074:345:36;3712:62:0;3788:15;3799:4;3788:15;;:::i;:::-;;-1:-1:-1;3627:5:0;;3593:221;;;;3831:43;3856:8;3866:7;3831:24;:43::i;:::-;3824:50;;-1:-1:-1;;3892:4:0;:28;3884:62;;;;-1:-1:-1;;;3884:62:0;;18276:2:36;3884:62:0;;;18258:21:36;18315:2;18295:18;;;18288:30;-1:-1:-1;;;18334:18:36;;;18327:51;18395:18;;3884:62:0;18074:345:36;3884:62:0;3963:29;:8;3978:7;3987:4;3963:14;:29::i;:::-;3956:36;3420:579;-1:-1:-1;;;;;3420:579:0:o;4360:974::-;4454:12;4478:22;4510:15;4572:30;4593:8;4572:20;:30::i;:::-;4544:58;;-1:-1:-1;4544:58:0;-1:-1:-1;4620:38:0;;;4612:85;;;;-1:-1:-1;;;4612:85:0;;18626:2:36;4612:85:0;;;18608:21:36;18665:2;18645:18;;;18638:30;18704:34;18684:18;;;18677:62;-1:-1:-1;;;18755:18:36;;;18748:32;18797:19;;4612:85:0;18424:398:36;4612:85:0;4724:7;4715:6;:16;4707:45;;;;-1:-1:-1;;;4707:45:0;;19029:2:36;4707:45:0;;;19011:21:36;19068:2;19048:18;;;19041:30;-1:-1:-1;;;19087:18:36;;;19080:46;19143:18;;4707:45:0;18827:340:36;4707:45:0;4763:16;;4811:18;4815:14;4811:1;:18;:::i;:::-;4793:36;;4845:9;4840:263;4864:6;4860:1;:10;4840:263;;;4920:41;4943:8;4953:7;4920:22;:41::i;:::-;4891:70;;-1:-1:-1;4891:70:0;-1:-1:-1;4983:32:0;;;4975:63;;;;-1:-1:-1;;;4975:63:0;;19374:2:36;4975:63:0;;;19356:21:36;19413:2;19393:18;;;19386:30;-1:-1:-1;;;19432:18:36;;;19425:48;19490:18;;4975:63:0;19172:342:36;4975:63:0;5084:8;5063:18;5067:14;5063:1;:18;:::i;:::-;:29;;;;:::i;:::-;5052:40;;;;:::i;:::-;;-1:-1:-1;4872:3:0;;4840:263;;;;5142:41;5165:8;5175:7;5142:22;:41::i;:::-;5113:70;;-1:-1:-1;5113:70:0;-1:-1:-1;5201:32:0;;;5193:63;;;;-1:-1:-1;;;5193:63:0;;19374:2:36;5193:63:0;;;19356:21:36;19413:2;19393:18;;;19386:30;-1:-1:-1;;;19432:18:36;;;19425:48;19490:18;;5193:63:0;19172:342:36;5193:63:0;5273:54;5288:7;5297:25;5308:14;5297:8;:25;:::i;:::-;:29;;5325:1;5297:29;:::i;:::-;5273:8;;:54;:14;:54::i;:::-;5266:61;4360:974;-1:-1:-1;;;;;;;4360: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;;19721:2:36;10561:70:2;;;19703:21:36;19760:2;19740:18;;;19733:30;-1:-1:-1;;;19779:18:36;;;19772:49;19838:18;;10561:70:2;19519:343:36;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;8501:440:33:-;8578:11;8621:1;:8;8609:1;:8;:20;8601:53;;;;-1:-1:-1;;;8601:53:33;;20069:2:36;8601:53:33;;;20051:21:36;20108:2;20088:18;;;20081:30;-1:-1:-1;;;20127:18:36;;;20120:50;20187:18;;8601:53:33;19867:344:36;8601:53:33;8740:8;;8726:11;8758:154;8779:6;8775:1;:10;8758:154;;;8818:1;8820;8818:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8810:12:33;;:1;8812;8810:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;8810:4:33;:12;8806:96;;8851:5;8842:14;;8874:13;;;;8806:96;8787:3;;8758:154;;;-1:-1:-1;8930:4:33;;8501:440;-1:-1:-1;;;;8501:440:33:o;8947:241::-;9025:7;9044:14;9061:13;:20;;;;;:::i;:::-;;-1:-1:-1;9091:13:33;;-1:-1:-1;9115:25:33;:7;9061:20;9137:2;9115:13;:25::i;:::-;9107:34;;;:::i;:::-;9166:14;;;8947:241;-1:-1:-1;;;;8947:241:33:o;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;2254:783:0:-;2347:7;2366:22;2398:20;2470:37;2493:8;2503:3;2470:22;:37::i;:::-;2437:70;;-1:-1:-1;2437:70:0;-1:-1:-1;2521:38:0;;;2517:96;;-1:-1:-1;;2575:27:0;;;;;;2517:96;2623:16;;2667:18;2671:14;2667:1;:18;:::i;:::-;2649:36;;2701:9;2696:310;2720:12;2716:1;:16;2696:310;;;2782:47;2805:8;2815:13;2821:7;2815:3;:13;:::i;2782:47::-;2753:76;;-1:-1:-1;2753:76:0;-1:-1:-1;2847:32:0;;;2843:98;;-1:-1:-1;;2899:27:0;;;;;;;;;2843:98;2987:8;2966:18;2970:14;2966:1;:18;:::i;:::-;:29;;;;:::i;:::-;2955:40;;;;:::i;:::-;;-1:-1:-1;2734:3:0;;2696:310;;;-1:-1:-1;3023:7:0;2254:783;-1:-1:-1;;;;;;2254:783:0:o;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;206:347:36;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:36;;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:826;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;831:18;823:6;820:30;817:50;;;863:1;860;853:12;817:50;902:58;952:7;943:6;932:9;928:22;902:58;:::i;:::-;979:8;;-1:-1:-1;876:84:36;-1:-1:-1;;1067:2:36;1052:18;;1039:32;1096:18;1083:32;;1080:52;;;1128:1;1125;1118:12;1080:52;1167:60;1219:7;1208:8;1197:9;1193:24;1167:60;:::i;:::-;558:826;;;;-1:-1:-1;1246:8:36;1350:2;1335:18;1322:32;;558:826;-1:-1:-1;;;;558:826:36:o;1779:610::-;1865:6;1873;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1982:9;1969:23;2015:18;2007:6;2004:30;2001:50;;;2047:1;2044;2037:12;2001:50;2070:22;;2123:4;2115:13;;2111:27;-1:-1:-1;2101:55:36;;2152:1;2149;2142:12;2101:55;2192:2;2179:16;2218:18;2210:6;2207:30;2204:50;;;2250:1;2247;2240:12;2204:50;2303:7;2298:2;2288:6;2285:1;2281:14;2277:2;2273:23;2269:32;2266:45;2263:65;;;2324:1;2321;2314:12;2263:65;2355:2;2347:11;;;;;2377:6;;-1:-1:-1;1779:610:36;-1:-1:-1;;;1779:610:36:o;2394:180::-;2453:6;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;-1:-1:-1;2545:23:36;;2394:180;-1:-1:-1;2394:180:36:o;2579:525::-;2726:2;2715:9;2708:21;2689:4;2758:6;2752:13;2801:6;2796:2;2785:9;2781:18;2774:34;2826:1;2836:140;2850:6;2847:1;2844:13;2836:140;;;2961:2;2945:14;;;2941:23;;2935:30;2930:2;2911:17;;;2907:26;2900:66;2865:10;2836:140;;;2840:3;3025:1;3020:2;3011:6;3000:9;2996:22;2992:31;2985:42;3095:2;3088;3084:7;3079:2;3071:6;3067:15;3063:29;3052:9;3048:45;3044:54;3036:62;;;2579:525;;;;:::o;3109:286::-;3168:6;3221:2;3209:9;3200:7;3196:23;3192:32;3189:52;;;3237:1;3234;3227:12;3189:52;3263:23;;-1:-1:-1;;;;;3315:31:36;;3305:42;;3295:70;;3361:1;3358;3351:12;3813:394;3906:6;3959:2;3947:9;3938:7;3934:23;3930:32;3927:52;;;3975:1;3972;3965:12;3927:52;4015:9;4002:23;4048:18;4040:6;4037:30;4034:50;;;4080:1;4077;4070:12;4034:50;4103:22;;4159:3;4141:16;;;4137:26;4134:46;;;4176:1;4173;4166:12;5882:127;5943:10;5938:3;5934:20;5931:1;5924:31;5974:4;5971:1;5964:15;5998:4;5995:1;5988:15;6014:380;6093:1;6089:12;;;;6136;;;6157:61;;6211:4;6203:6;6199:17;6189:27;;6157:61;6264:2;6256:6;6253:14;6233:18;6230:38;6227:161;;6310:10;6305:3;6301:20;6298:1;6291:31;6345:4;6342:1;6335:15;6373:4;6370:1;6363:15;6227:161;;6014:380;;;:::o;6524:517::-;6625:2;6620:3;6617:11;6614:421;;;6661:5;6658:1;6651:16;6705:4;6702:1;6692:18;6775:2;6763:10;6759:19;6756:1;6752:27;6746:4;6742:38;6811:4;6799:10;6796:20;6793:47;;;-1:-1:-1;6834:4:36;6793:47;6889:2;6884:3;6880:12;6877:1;6873:20;6867:4;6863:31;6853:41;;6944:81;6962:2;6955:5;6952:13;6944:81;;;7021:1;7007:16;;6988:1;6977:13;6944:81;;;6948:3;;6614:421;6524:517;;;:::o;7217:1202::-;7339:18;7334:3;7331:27;7328:53;;;7361:18;;:::i;:::-;7390:93;7479:3;7439:38;7471:4;7465:11;7439:38;:::i;:::-;7433:4;7390:93;:::i;:::-;7509:1;7534:2;7529:3;7526:11;7551:1;7546:615;;;;8205:1;8222:3;8219:93;;;-1:-1:-1;8278:19:36;;;8265:33;8219:93;-1:-1:-1;;7174:1:36;7170:11;;;7166:24;7162:29;7152:40;7198:1;7194:11;;;7149:57;8325:78;;7519:894;;7546:615;6471:1;6464:14;;;6508:4;6495:18;;-1:-1:-1;;7582:17:36;;;7682:9;7704:229;7718:7;7715:1;7712:14;7704:229;;;7807:19;;;7794:33;7779:49;;7914:4;7899:20;;;;7867:1;7855:14;;;;7734:12;7704:229;;;7708:3;7961;7952:7;7949:16;7946:159;;;8085:1;8081:6;8075:3;8069;8066:1;8062:11;8058:21;8054:34;8050:39;8037:9;8032:3;8028:19;8015:33;8011:79;8003:6;7996:95;7946:159;;;8148:1;8142:3;8139:1;8135:11;8131:19;8125:4;8118:33;7519:894;;7217:1202;;;:::o;8729:266::-;8817:6;8812:3;8805:19;8869:6;8862:5;8855:4;8850:3;8846:14;8833:43;-1:-1:-1;8921:1:36;8896:16;;;8914:4;8892:27;;;8885:38;;;;8977:2;8956:15;;;-1:-1:-1;;8952:29:36;8943:39;;;8939:50;;8729:266::o;9000:502::-;9241:2;9230:9;9223:21;9204:4;9267:61;9324:2;9313:9;9309:18;9301:6;9293;9267:61;:::i;:::-;9376:9;9368:6;9364:22;9359:2;9348:9;9344:18;9337:50;9404:49;9446:6;9438;9430;9404:49;:::i;:::-;9396:57;;;9489:6;9484:2;9473:9;9469:18;9462:34;9000:502;;;;;;;;:::o;9507:127::-;9568:10;9563:3;9559:20;9556:1;9549:31;9599:4;9596:1;9589:15;9623:4;9620:1;9613:15;9639:168;9712:9;;;9743;;9760:15;;;9754:22;;9740:37;9730:71;;9781:18;;:::i;10164:127::-;10225:10;10220:3;10216:20;10213:1;10206:31;10256:4;10253:1;10246:15;10280:4;10277:1;10270:15;10296:125;10361:9;;;10382:10;;;10379:36;;;10395:18;;:::i;11105:286::-;11163:6;11216:2;11204:9;11195:7;11191:23;11187:32;11184:52;;;11232:1;11229;11222:12;11184:52;11258:23;;-1:-1:-1;;;;;;11310:32:36;;11300:43;;11290:71;;11357:1;11354;11347:12;11396:281;11454:6;11507:2;11495:9;11486:7;11482:23;11478:32;11475:52;;;11523:1;11520;11513:12;11475:52;11549:23;;-1:-1:-1;;;;;;11601:27:36;;11591:38;;11581:66;;11643:1;11640;11633:12;11682:521;11759:4;11765:6;11825:11;11812:25;11919:2;11915:7;11904:8;11888:14;11884:29;11880:43;11860:18;11856:68;11846:96;;11938:1;11935;11928:12;11846:96;11965:33;;12017:20;;;-1:-1:-1;12060:18:36;12049:30;;12046:50;;;12092:1;12089;12082:12;12046:50;12125:4;12113:17;;-1:-1:-1;12156:14:36;12152:27;;;12142:38;;12139:58;;;12193:1;12190;12183:12;14026:459;14267:6;14256:9;14249:25;14310:6;14305:2;14294:9;14290:18;14283:34;14353:3;14348:2;14337:9;14333:18;14326:31;14230:4;14374:62;14431:3;14420:9;14416:19;14408:6;14400;14374:62;:::i;:::-;14366:70;;14472:6;14467:2;14456:9;14452:18;14445:34;14026:459;;;;;;;;:::o;14490:277::-;14557:6;14610:2;14598:9;14589:7;14585:23;14581:32;14578:52;;;14626:1;14623;14616:12;14578:52;14658:9;14652:16;14711:5;14704:13;14697:21;14690:5;14687:32;14677:60;;14733:1;14730;14723:12;15829:128;15896:9;;;15917:11;;;15914:37;;;15931:18;;:::i;17216:853::-;-1:-1:-1;;;;;;17575:33:36;;17563:46;;-1:-1:-1;;;;;;17638:28:36;;17634:1;17625:11;;17618:49;17710:6;17702;17698:1;17689:11;;17676:41;17545:3;17745:6;17740:3;17736:16;17779:1;17775:2;17771:10;17801:1;17797:2;17790:13;17837:6;17829;17825:2;17812:32;-1:-1:-1;17906:1:36;17867:15;;;17884:1;17863:23;17895:13;;;17942:6;17934;17863:23;17917:32;-1:-1:-1;;;;;;18003:33:36;;;;17968:15;;;;17992:45;;;-1:-1:-1;18061:1:36;18053:10;;17216:853;-1:-1:-1;;;;;;;;17216:853:36:o;20216:412::-;20334:12;;20382:4;20371:16;;20365:23;-1:-1:-1;;20406:40:36;;;20334:12;20469:2;20458:14;;20455:167;;;20584:26;20580:31;20549:26;20545:31;20535:6;20531:2;20527:15;20524:1;20520:23;20516:61;20512:2;20508:70;20504:108;20495:117;;20455:167;;;20216:412;;;:::o;20633:148::-;20721:4;20700:12;;;20714;;;20696:31;;20739:13;;20736:39;;;20755: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)":"41260137","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.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"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\":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\"}],\"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\",\"errors\":{\"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.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"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.\"},\"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.\"},\"withdraw(bytes32)\":{\"params\":{\"bitcoin_address\":\"The Bitcoin address of the receiver\"}}},\"title\":\"Bridge contract for the Citrea end of Citrea <> Bitcoin bridge\",\"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 the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount 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\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"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/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de\",\"dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w\"]},\"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/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7\",\"dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf\"]},\"src/Bridge.sol\":{\"keccak256\":\"0xa7a2f7cacb08eeba59342258e4b417ad64b176848ab1a8a08690075f98b8bcf4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://07344bad000cfba385638a58f9a856148b0255c00101ee66bd10a97528c00707\",\"dweb:/ipfs/QmWt9Y3fbhufjjr6TbAt1y6aWYLSaRRSCXY49Ng5EXNoLz\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"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":[{"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":"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"}],"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":{"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."},"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."},"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 the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount 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-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/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/WitnessUtils.sol":{"keccak256":"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af","urls":["bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de","dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w"],"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/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c","urls":["bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7","dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0xa7a2f7cacb08eeba59342258e4b417ad64b176848ab1a8a08690075f98b8bcf4","urls":["bzz-raw://07344bad000cfba385638a58f9a856148b0255c00101ee66bd10a97528c00707","dweb:/ipfs/QmWt9Y3fbhufjjr6TbAt1y6aWYLSaRRSCXY49Ng5EXNoLz"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":33} \ 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"}],"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":"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":"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":"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"}]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506124608061001f6000396000f3fe6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356","sourceMap":"430:9067:43:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356","sourceMap":"430:9067:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:23;;;;;;;;;;-1:-1:-1;1018:23:43;;;;;;;;;;;179:14:48;;172:22;154:41;;142:2;127:18;1018:23:43;;;;;;;;2269:810;;;;;;;;;;-1:-1:-1;2269:810:43;;;;;:::i;:::-;;:::i;:::-;;1133:32;;;;;;;;;;;;;;;;;;;1535:25:48;;;1523:2;1508:18;1133:32:43;1389:177:48;1104:23:43;;;;;;;;;;-1:-1:-1;1104:23:43;;;;;;;-1:-1:-1;;;;;1104:23:43;;;;;;-1:-1:-1;;;;;1735:32:48;;;1717:51;;1705:2;1690:18;1104:23:43;1571:203:48;7309:440:43;;;;;;:::i;:::-;;:::i;1239:43::-;;;;;;;;;;-1:-1:-1;1239:43:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;3155:101:25;;;;;;;;;;;;;:::i;7812:108:43:-;;;;;;;;;;-1:-1:-1;7891:15:43;:22;7812:108;;2774:229:24;;;;;;;;;;;;;:::i;1203:25:43:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2441:144:25:-;;;;;;;;;;;;;:::i;6763:301:43:-;;;;;;:::i;:::-;;:::i;3572:505::-;;;;;;;;;;-1:-1:-1;3572:505:43;;;;;:::i;:::-;;:::i;8063:147::-;;;;;;;;;;-1:-1:-1;8063:147:43;;;;;:::i;:::-;;:::i;1171:26::-;;;;;;;;;;;;;:::i;1288:32::-;;;;;;;;;;-1:-1:-1;1288:32:43;;;;;:::i;:::-;;:::i;920:91::-;;;;;;;;;;;;968:42;920:91;;4324:2185;;;;;;;;;;-1:-1:-1;4324:2185:43;;;;;:::i;:::-;;:::i;1680:168:24:-;;;;;;;;;;;;;:::i;793:121:43:-;;;;;;;;;;;;-1:-1:-1;;;;;793:121:43;;1047:51;;;;;;;;;;;;1088:10;1047:51;;2041:247:24;;;;;;;;;;-1:-1:-1;2041:247:24;;;;;:::i;:::-;;:::i;2269:810:43:-;1693:10;968:42;1693:27;1685:71;;;;-1:-1:-1;;;1685:71:43;;4650:2:48;1685:71:43;;;4632:21:48;4689:2;4669:18;;;4662:30;4728:33;4708:18;;;4701:61;4779:18;;1685:71:43;;;;;;;;;2417:11:::1;::::0;::::1;;2416:12;2408:56;;;::::0;-1:-1:-1;;;2408:56:43;;5010:2:48;2408:56:43::1;::::0;::::1;4992:21:48::0;5049:2;5029:18;;;5022:30;5088:33;5068:18;;;5061:61;5139:18;;2408:56:43::1;4808:355:48::0;2408:56:43::1;2482:18;2504:1;2482:23:::0;2474:62:::1;;;::::0;-1:-1:-1;;;2474:62:43;;5370:2:48;2474:62:43::1;::::0;::::1;5352:21:48::0;5409:2;5389:18;;;5382:30;5448:28;5428:18;;;5421:56;5494:18;;2474:62:43::1;5168:350:48::0;2474:62:43::1;2579:1;2554:26:::0;;;2546:69:::1;;;::::0;-1:-1:-1;;;2546:69:43;;5725:2:48;2546:69:43::1;::::0;::::1;5707:21:48::0;5764:2;5744:18;;;5737:30;5803:32;5783:18;;;5776:60;5853:18;;2546:69:43::1;5523:354:48::0;2546:69:43::1;2626:11;:18:::0;;-1:-1:-1;;2626:18:43::1;2640:4;2626:18;::::0;;2654:13:::1;:30;2670:14:::0;;2654:13;:30:::1;:::i;:::-;-1:-1:-1::0;2694:12:43::1;:28;2709:13:::0;;2694:12;:28:::1;:::i;:::-;-1:-1:-1::0;2732:17:43::1;:38:::0;;;2905:8:::1;:24:::0;;-1:-1:-1;;;;;;2905:24:43::1;::::0;::::1;::::0;;2945:42:::1;::::0;;8598:51:48;;;968:42:43::1;8680:2:48::0;8665:18;;8658:60;2945:42:43::1;::::0;8571:18:48;2945:42:43::1;;;;;;;3002:70;3022:14;;3038:13;;3053:18;3002:70;;;;;;;;;;:::i;:::-;;;;;;;;2269:810:::0;;;;;:::o;7309:440::-;7418:41;7435:17;1088:10;7418:41;:::i;:::-;7405:9;:54;7397:90;;;;-1:-1:-1;;;7397:90:43;;10014:2:48;7397:90:43;;;9996:21:48;10053:2;10033:18;;;10026:30;-1:-1:-1;;;10072:18:48;;;10065:53;10135:18;;7397:90:43;9812:347:48;7397:90:43;7513:15;:22;7497:13;7545:198;7562:28;;;7545:198;;;7611:15;7632:17;;7650:1;7632:20;;;;;;;:::i;:::-;7611:42;;;;;;;-1:-1:-1;7611:42:43;;;7632:20;7611:42;;;;7632:20;;;;;;;;;7611:42;;;;;-1:-1:-1;7672:60:43;7683:17;;7701:1;7683:20;;;;;;;:::i;:::-;;;;;;;7713:1;7705:5;:9;;;;:::i;:::-;7672:60;;;10628:25:48;;;10684:2;10669:18;;10662:34;;;;7716:15:43;10712:18:48;;;10705:34;10616:2;10601:18;7672:60:43;;;;;;;7592:3;;7545:198;;;;7387:362;7309:440;;:::o;3155:101:25:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;2774:229:24:-;966:10:27;;2869:14:24;:12;:14::i;:::-;-1:-1:-1;;;;;2869:24:24;;2865:96;;2916:34;;-1:-1:-1;;;2916:34:24;;-1:-1:-1;;;;;1735:32:48;;2916:34:24;;;1717:51:48;1690:18;;2916:34:24;1571:203:48;2865:96:24;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;1203:25:43:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2441:144:25:-;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:25;;2441:144;-1:-1:-1;;2441:144:25:o;6763:301:43:-;1088:10;6841:9;:27;6833:63;;;;-1:-1:-1;;;6833:63:43;;10014:2:48;6833:63:43;;;9996:21:48;10053:2;10033:18;;;10026:30;-1:-1:-1;;;10072:18:48;;;10065:53;10135:18;;6833:63:43;9812:347:48;6833:63:43;6922:15;:22;;6954:37;;;;;-1:-1:-1;6954:37:43;;;;;;;;;;7006:51;;;10628:25:48;;;10684:2;10669:18;;10662:34;;;7041:15:43;10712:18:48;;;10705:34;7006:51:43;;;;;;;10616:2:48;7006:51:43;;;6823:241;6763:301;:::o;3572:505::-;2334:13:25;:11;:13::i;:::-;3724:18:43::1;3746:1;3724:23:::0;3716:62:::1;;;::::0;-1:-1:-1;;;3716:62:43;;5370:2:48;3716:62:43::1;::::0;::::1;5352:21:48::0;5409:2;5389:18;;;5382:30;5448:28;5428:18;;;5421:56;5494:18;;3716:62:43::1;5168:350:48::0;3716:62:43::1;3821:1;3796:26:::0;;;3788:69:::1;;;::::0;-1:-1:-1;;;3788:69:43;;5725:2:48;3788:69:43::1;::::0;::::1;5707:21:48::0;5764:2;5744:18;;;5737:30;5803:32;5783:18;;;5776:60;5853:18;;3788:69:43::1;5523:354:48::0;3788:69:43::1;3868:13;:30;3884:14:::0;;3868:13;:30:::1;:::i;:::-;-1:-1:-1::0;3908:12:43::1;:28;3923:13:::0;;3908:12;:28:::1;:::i;:::-;-1:-1:-1::0;3946:17:43::1;:38:::0;;;4000:70:::1;::::0;::::1;::::0;::::1;::::0;4020:14;;;;4036:13;;;;3966:18;;4000:70:::1;:::i;8063:147::-:0;2334:13:25;:11;:13::i;:::-;8132:8:43::1;:20:::0;;-1:-1:-1;;;;;;8132:20:43::1;;-1:-1:-1::0;;;;;8132:20:43;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;8167:36:::1;::::0;;8183:8;;;::::1;;8598:51:48::0;;8680:2;8665:18;;8658:60;;;;8167:36:43::1;::::0;8571:18:48;8167:36:43::1;;;;;;;8063:147:::0;:::o;1171:26::-;;;;;;;:::i;1288:32::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1288:32:43;:::o;4324:2185::-;1836:8;;;;;-1:-1:-1;;;;;1836:8:43;1822:10;:22;1814:61;;;;-1:-1:-1;;;1814:61:43;;10952:2:48;1814:61:43;;;10934:21:48;10991:2;10971:18;;;10964:30;11030:28;11010:18;;;11003:56;11076:18;;1814:61:43;10750:350:48;1814:61:43;4750:13:::1;4766:84;4794:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4805:6;::::0;;;::::1;::::0;::::1;;:::i;:::-;4813:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;4820:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;4828:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;4839:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4766:27;:84::i;:::-;4869:18;::::0;;;:11:::1;:18;::::0;;;;;4750:100;;-1:-1:-1;4869:18:43::1;;4868:19;4860:51;;;::::0;-1:-1:-1;;;4860:51:43;;12410:2:48;4860:51:43::1;::::0;::::1;12392:21:48::0;12449:2;12429:18;;;12422:30;-1:-1:-1;;;12468:18:48;;;12461:49;12527:18;;4860:51:43::1;12208:343:48::0;4860:51:43::1;4921:18;::::0;;;:11:::1;:18;::::0;;;;;;:25;;-1:-1:-1;;4921:25:43::1;4942:4;4921:25;::::0;;4965:27:::1;::::0;4986:5:::1;::::0;;::::1;:1:::0;:5:::1;:::i;:::-;4965:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4965:20:43::1;::::0;-1:-1:-1;;;4965:27:43:i:1;:::-;4957:69;;;::::0;-1:-1:-1;;;4957:69:43;;12758:2:48;4957:69:43::1;::::0;::::1;12740:21:48::0;12797:2;12777:18;;;12770:30;12836:31;12816:18;;;12809:59;12885:18;;4957:69:43::1;12556:353:48::0;4957:69:43::1;5044:29;5066:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;5044:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5044:21:43::1;::::0;-1:-1:-1;;;5044:29:43:i:1;:::-;5036:72;;;::::0;-1:-1:-1;;;5036:72:43;;13116:2:48;5036:72:43::1;::::0;::::1;13098:21:48::0;13155:2;13135:18;;;13128:30;13194:32;13174:18;;;13167:60;13244:18;;5036:72:43::1;12914:354:48::0;5036:72:43::1;5130:13;5147:27;5168:5;;::::0;::::1;:1:::0;:5:::1;:::i;:::-;5147:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5147:20:43::1;::::0;-1:-1:-1;;;5147:27:43:i:1;:::-;5127:47;;;5192:5;5201:1;5192:10;5184:45;;;::::0;-1:-1:-1;;;5184:45:43;;13475:2:48;5184:45:43::1;::::0;::::1;13457:21:48::0;13514:2;13494:18;;;13487:30;-1:-1:-1;;;13533:18:48;;;13526:52;13595:18;;5184:45:43::1;13273:346:48::0;5184:45:43::1;5298:46;5327:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5298:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5338:5:43;;-1:-1:-1;5298:28:43::1;::::0;-1:-1:-1;;5298:46:43:i:1;:::-;5290:92;;;::::0;-1:-1:-1;;;5290:92:43;;13826:2:48;5290:92:43::1;::::0;::::1;13808:21:48::0;13865:2;13845:18;;;13838:30;13904:34;13884:18;;;13877:62;-1:-1:-1;;;13955:18:48;;;13948:31;13996:19;;5290:92:43::1;13624:397:48::0;5290:92:43::1;-1:-1:-1::0;;;;;5401:28:43::1;5430:14;::::0;::::1;;5446:5:::0;5453:20:::1;;::::0;::::1;5430:1:::0;5453:20:::1;:::i;:::-;5475:1;:7;;;5401:82;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5393:122;;;::::0;-1:-1:-1;;;5393:122:43;;14974:2:48;5393:122:43::1;::::0;::::1;14956:21:48::0;15013:2;14993:18;;;14986:30;15052:29;15032:18;;;15025:57;15099:18;;5393:122:43::1;14772:351:48::0;5393:122:43::1;5526:21;5550:48;5585:9;;::::0;::::1;:1:::0;:9:::1;:::i;:::-;5550:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5550:48:43;-1:-1:-1;5550:34:43::1;::::0;-1:-1:-1;;5550:48:43:i:1;:::-;5526:72;;5611:15;5630:30;5651:8;5630:20;:30::i;:::-;5608:52;;;5689:17;;5709:1;5689:21;;;;:::i;:::-;5678:7;:32;5670:66;;;::::0;-1:-1:-1;;;5670:66:43;;15330:2:48;5670:66:43::1;::::0;::::1;15312:21:48::0;15369:2;15349:18;;;15342:30;-1:-1:-1;;;15388:18:48;;;15381:51;15449:18;;5670:66:43::1;15128:345:48::0;5670:66:43::1;5798:19;5820:64;5856:8;5866:17;;5820:35;:64::i;:::-;5798:86;;5894:12;5909:13;:20;;;;;:::i;:::-;::::0;-1:-1:-1;5939:27:43::1;::::0;-1:-1:-1;5969:21:43::1;:6:::0;5939:27;5909:20;5969:12:::1;:21::i;:::-;5939:51;;6008:43;6021:14;6037:13;6008:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:43::i;:::-;6000:78;;;::::0;-1:-1:-1;;;6000:78:43;;15680:2:48;6000:78:43::1;::::0;::::1;15662:21:48::0;15719:2;15699:18;;;15692:30;-1:-1:-1;;;15738:18:48;;;15731:52;15800:18;;6000:78:43::1;15478:346:48::0;6000:78:43::1;6088:20;6111:52;6124:9;:4:::0;6131:2:::1;6124:9;:::i;:::-;6152;:4:::0;6159:2:::1;6152:9;:::i;:::-;6135:6;:13;:27;;;;:::i;:::-;6111:6:::0;;:52;:12:::1;:52::i;:::-;6088:75;;6205:35;6218:7;6227:12;6205:35;;;;;:::i;:::-;6197:69;;;::::0;-1:-1:-1;;;6197:69:43;;16164:2:48;6197:69:43::1;::::0;::::1;16146:21:48::0;16203:2;16183:18;;;16176:30;-1:-1:-1;;;16222:18:48;;;16215:51;16283:18;;6197:69:43::1;15962:345:48::0;6197:69:43::1;6277:17;6297:31;6321:6;6297:23;:31::i;:::-;6344:42;::::0;;16514:25:48;;;-1:-1:-1;;;;;16575:32:48;;16570:2;16555:18;;16548:60;6370:15:43::1;16624:18:48::0;;;16617:34;6344:42:43;;16575:32:48;;-1:-1:-1;6344:42:43::1;::::0;;;;;16502:2:48;6344:42:43;;::::1;6398:12;6416:9;-1:-1:-1::0;;;;;6416:14:43::1;1088:10;6416:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6397:60;;;6475:7;6467:35;;;::::0;-1:-1:-1;;;6467:35:43;;17074:2:48;6467:35:43::1;::::0;::::1;17056:21:48::0;17113:2;17093:18;;;17086:30;-1:-1:-1;;;17132:18:48;;;17125:45;17187:18;;6467:35:43::1;16872:339:48::0;6467:35:43::1;4403:2106;;;;;;;;;;4324:2185:::0;:::o;1680:168:24:-;1733:7;;1318:27;1784:25;1187:174;2041:247;2334:13:25;:11;:13::i;:::-;1318:27:24;2197:26;;-1:-1:-1;;;;;;2197:26:24::1;-1:-1:-1::0;;;;;2197:26:24;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;2238:43:24::1;;;;;;;;;;;2120:168;2041:247:::0;:::o;2658:162:25:-;966:10:27;2717:7:25;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:25;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:25;;966:10:27;2763:40:25;;;1717:51:48;1690:18;;2763:40:25;1571:203:48;2472:222:24;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:24;;;2653:34;2678:8;2653:24;:34::i;:::-;2544:150;2472:222;:::o;431:320:0:-;643:7;669:75;686:7;695:4;701:3;;706:4;;712:7;;721:8;669:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:73;:75::i;:::-;662:82;431:320;-1:-1:-1;;;;;;;;;;431: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;1060:871:0:-;1147:4;1222:6;1232:1;1222:11;1218:54;;-1:-1:-1;1256:5:0;1249:12;;1218:54;1282:15;1317:9;1312:512;1336:6;1332:1;:10;1312:512;;;1436:8;:15;1425:7;:26;1421:77;;1478:5;1471:12;;;;;;1421:77;1573:16;1592:43;1617:8;1627:7;1592:24;:43::i;:::-;1573:62;;-1:-1:-1;;1653:8:0;:32;1649:83;;1712:5;1705:12;;;;;;;1649:83;1794:19;1805:8;1794:19;;:::i;:::-;;-1:-1:-1;;1344:3:0;;1312:512;;;-1:-1:-1;1909:15:0;;1898:26;;-1:-1:-1;1060:871:0;;;;;:::o;3420:579::-;3513:12;3537;3563:15;3598:10;3593:221;3619:6;3614:2;:11;3593:221;;;3655:43;3680:8;3690:7;3655:24;:43::i;:::-;3648:50;;-1:-1:-1;;3720:4:0;:28;3712:62;;;;-1:-1:-1;;;3712:62:0;;18276:2:48;3712:62:0;;;18258:21:48;18315:2;18295:18;;;18288:30;-1:-1:-1;;;18334:18:48;;;18327:51;18395:18;;3712:62:0;18074:345:48;3712:62:0;3788:15;3799:4;3788:15;;:::i;:::-;;-1:-1:-1;3627:5:0;;3593:221;;;;3831:43;3856:8;3866:7;3831:24;:43::i;:::-;3824:50;;-1:-1:-1;;3892:4:0;:28;3884:62;;;;-1:-1:-1;;;3884:62:0;;18276:2:48;3884:62:0;;;18258:21:48;18315:2;18295:18;;;18288:30;-1:-1:-1;;;18334:18:48;;;18327:51;18395:18;;3884:62:0;18074:345:48;3884:62:0;3963:29;:8;3978:7;3987:4;3963:14;:29::i;:::-;3956:36;3420:579;-1:-1:-1;;;;;3420:579:0:o;4360:974::-;4454:12;4478:22;4510:15;4572:30;4593:8;4572:20;:30::i;:::-;4544:58;;-1:-1:-1;4544:58:0;-1:-1:-1;4620:38:0;;;4612:85;;;;-1:-1:-1;;;4612:85:0;;18626:2:48;4612:85:0;;;18608:21:48;18665:2;18645:18;;;18638:30;18704:34;18684:18;;;18677:62;-1:-1:-1;;;18755:18:48;;;18748:32;18797:19;;4612:85:0;18424:398:48;4612:85:0;4724:7;4715:6;:16;4707:45;;;;-1:-1:-1;;;4707:45:0;;19029:2:48;4707:45:0;;;19011:21:48;19068:2;19048:18;;;19041:30;-1:-1:-1;;;19087:18:48;;;19080:46;19143:18;;4707:45:0;18827:340:48;4707:45:0;4763:16;;4811:18;4815:14;4811:1;:18;:::i;:::-;4793:36;;4845:9;4840:263;4864:6;4860:1;:10;4840:263;;;4920:41;4943:8;4953:7;4920:22;:41::i;:::-;4891:70;;-1:-1:-1;4891:70:0;-1:-1:-1;4983:32:0;;;4975:63;;;;-1:-1:-1;;;4975:63:0;;19374:2:48;4975:63:0;;;19356:21:48;19413:2;19393:18;;;19386:30;-1:-1:-1;;;19432:18:48;;;19425:48;19490:18;;4975:63:0;19172:342:48;4975:63:0;5084:8;5063:18;5067:14;5063:1;:18;:::i;:::-;:29;;;;:::i;:::-;5052:40;;;;:::i;:::-;;-1:-1:-1;4872:3:0;;4840:263;;;;5142:41;5165:8;5175:7;5142:22;:41::i;:::-;5113:70;;-1:-1:-1;5113:70:0;-1:-1:-1;5201:32:0;;;5193:63;;;;-1:-1:-1;;;5193:63:0;;19374:2:48;5193:63:0;;;19356:21:48;19413:2;19393:18;;;19386:30;-1:-1:-1;;;19432:18:48;;;19425:48;19490:18;;5193:63:0;19172:342:48;5193:63:0;5273:54;5288:7;5297:25;5308:14;5297:8;:25;:::i;:::-;:29;;5325:1;5297:29;:::i;:::-;5273:8;;:54;:14;:54::i;:::-;5266:61;4360:974;-1:-1:-1;;;;;;;4360: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;;19721:2:48;10561:70:2;;;19703:21:48;19760:2;19740:18;;;19733:30;-1:-1:-1;;;19779:18:48;;;19772:49;19838:18;;10561:70:2;19519:343:48;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;8474:774:43:-;8588:8;;8617;;8551:11;;8588:8;8610:15;;8606:58;;8648:5;8641:12;;;;;8606:58;8691:2;8674:14;;8751:289;8768:3;8758:6;:13;8751:289;;-1:-1:-1;;8830:14:43;;;8824:21;8879:14;;;8873:21;8933:2;8921:15;;;;8967:16;;;8963:67;;9010:5;9003:12;;;;;;;;8963:67;8751:289;;;9097:6;9106:11;9115:2;9106:6;:11;:::i;:::-;9097:20;;9092:128;9123:3;9119:1;:7;9092:128;;;9159:1;9161;9159:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;9151:12:43;;:1;9153;9151:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;9151:4:43;:12;9147:63;;9190:5;9183:12;;;;;;;;;9147:63;9128:3;;9092:128;;;-1:-1:-1;9237:4:43;;8474:774;-1:-1:-1;;;;;;;8474:774:43:o;9254:241::-;9332:7;9351:14;9368:13;:20;;;;;:::i;:::-;;-1:-1:-1;9398:13:43;;-1:-1:-1;9422:25:43;:7;9368:20;9444:2;9422:13;:25::i;:::-;9414:34;;;:::i;:::-;9473:14;;;9254:241;-1:-1:-1;;;;9254:241:43:o;3774:248:25:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:25;;-1:-1:-1;;;;;3941:19:25;;;;;;;;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;2254:783:0:-;2347:7;2366:22;2398:20;2470:37;2493:8;2503:3;2470:22;:37::i;:::-;2437:70;;-1:-1:-1;2437:70:0;-1:-1:-1;2521:38:0;;;2517:96;;-1:-1:-1;;2575:27:0;;;;;;2517:96;2623:16;;2667:18;2671:14;2667:1;:18;:::i;:::-;2649:36;;2701:9;2696:310;2720:12;2716:1;:16;2696:310;;;2782:47;2805:8;2815:13;2821:7;2815:3;:13;:::i;2782:47::-;2753:76;;-1:-1:-1;2753:76:0;-1:-1:-1;2847:32:0;;;2843:98;;-1:-1:-1;;2899:27:0;;;;;;;;;2843:98;2987:8;2966:18;2970:14;2966:1;:18;:::i;:::-;:29;;;;:::i;:::-;2955:40;;;;:::i;:::-;;-1:-1:-1;2734:3:0;;2696:310;;;-1:-1:-1;3023:7:0;2254:783;-1:-1:-1;;;;;;2254:783:0:o;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;206:347:48;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:48;;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:826;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;831:18;823:6;820:30;817:50;;;863:1;860;853:12;817:50;902:58;952:7;943:6;932:9;928:22;902:58;:::i;:::-;979:8;;-1:-1:-1;876:84:48;-1:-1:-1;;1067:2:48;1052:18;;1039:32;1096:18;1083:32;;1080:52;;;1128:1;1125;1118:12;1080:52;1167:60;1219:7;1208:8;1197:9;1193:24;1167:60;:::i;:::-;558:826;;;;-1:-1:-1;1246:8:48;1350:2;1335:18;1322:32;;558:826;-1:-1:-1;;;;558:826:48:o;1779:610::-;1865:6;1873;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1982:9;1969:23;2015:18;2007:6;2004:30;2001:50;;;2047:1;2044;2037:12;2001:50;2070:22;;2123:4;2115:13;;2111:27;-1:-1:-1;2101:55:48;;2152:1;2149;2142:12;2101:55;2192:2;2179:16;2218:18;2210:6;2207:30;2204:50;;;2250:1;2247;2240:12;2204:50;2303:7;2298:2;2288:6;2285:1;2281:14;2277:2;2273:23;2269:32;2266:45;2263:65;;;2324:1;2321;2314:12;2263:65;2355:2;2347:11;;;;;2377:6;;-1:-1:-1;1779:610:48;-1:-1:-1;;;1779:610:48:o;2394:180::-;2453:6;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;-1:-1:-1;2545:23:48;;2394:180;-1:-1:-1;2394:180:48:o;2579:525::-;2726:2;2715:9;2708:21;2689:4;2758:6;2752:13;2801:6;2796:2;2785:9;2781:18;2774:34;2826:1;2836:140;2850:6;2847:1;2844:13;2836:140;;;2961:2;2945:14;;;2941:23;;2935:30;2930:2;2911:17;;;2907:26;2900:66;2865:10;2836:140;;;2840:3;3025:1;3020:2;3011:6;3000:9;2996:22;2992:31;2985:42;3095:2;3088;3084:7;3079:2;3071:6;3067:15;3063:29;3052:9;3048:45;3044:54;3036:62;;;2579:525;;;;:::o;3109:286::-;3168:6;3221:2;3209:9;3200:7;3196:23;3192:32;3189:52;;;3237:1;3234;3227:12;3189:52;3263:23;;-1:-1:-1;;;;;3315:31:48;;3305:42;;3295:70;;3361:1;3358;3351:12;3813:394;3906:6;3959:2;3947:9;3938:7;3934:23;3930:32;3927:52;;;3975:1;3972;3965:12;3927:52;4015:9;4002:23;4048:18;4040:6;4037:30;4034:50;;;4080:1;4077;4070:12;4034:50;4103:22;;4159:3;4141:16;;;4137:26;4134:46;;;4176:1;4173;4166:12;5882:127;5943:10;5938:3;5934:20;5931:1;5924:31;5974:4;5971:1;5964:15;5998:4;5995:1;5988:15;6014:380;6093:1;6089:12;;;;6136;;;6157:61;;6211:4;6203:6;6199:17;6189:27;;6157:61;6264:2;6256:6;6253:14;6233:18;6230:38;6227:161;;6310:10;6305:3;6301:20;6298:1;6291:31;6345:4;6342:1;6335:15;6373:4;6370:1;6363:15;6227:161;;6014:380;;;:::o;6524:517::-;6625:2;6620:3;6617:11;6614:421;;;6661:5;6658:1;6651:16;6705:4;6702:1;6692:18;6775:2;6763:10;6759:19;6756:1;6752:27;6746:4;6742:38;6811:4;6799:10;6796:20;6793:47;;;-1:-1:-1;6834:4:48;6793:47;6889:2;6884:3;6880:12;6877:1;6873:20;6867:4;6863:31;6853:41;;6944:81;6962:2;6955:5;6952:13;6944:81;;;7021:1;7007:16;;6988:1;6977:13;6944:81;;;6948:3;;6614:421;6524:517;;;:::o;7217:1202::-;7339:18;7334:3;7331:27;7328:53;;;7361:18;;:::i;:::-;7390:93;7479:3;7439:38;7471:4;7465:11;7439:38;:::i;:::-;7433:4;7390:93;:::i;:::-;7509:1;7534:2;7529:3;7526:11;7551:1;7546:615;;;;8205:1;8222:3;8219:93;;;-1:-1:-1;8278:19:48;;;8265:33;8219:93;-1:-1:-1;;7174:1:48;7170:11;;;7166:24;7162:29;7152:40;7198:1;7194:11;;;7149:57;8325:78;;7519:894;;7546:615;6471:1;6464:14;;;6508:4;6495:18;;-1:-1:-1;;7582:17:48;;;7682:9;7704:229;7718:7;7715:1;7712:14;7704:229;;;7807:19;;;7794:33;7779:49;;7914:4;7899:20;;;;7867:1;7855:14;;;;7734:12;7704:229;;;7708:3;7961;7952:7;7949:16;7946:159;;;8085:1;8081:6;8075:3;8069;8066:1;8062:11;8058:21;8054:34;8050:39;8037:9;8032:3;8028:19;8015:33;8011:79;8003:6;7996:95;7946:159;;;8148:1;8142:3;8139:1;8135:11;8131:19;8125:4;8118:33;7519:894;;7217:1202;;;:::o;8729:266::-;8817:6;8812:3;8805:19;8869:6;8862:5;8855:4;8850:3;8846:14;8833:43;-1:-1:-1;8921:1:48;8896:16;;;8914:4;8892:27;;;8885:38;;;;8977:2;8956:15;;;-1:-1:-1;;8952:29:48;8943:39;;;8939:50;;8729:266::o;9000:502::-;9241:2;9230:9;9223:21;9204:4;9267:61;9324:2;9313:9;9309:18;9301:6;9293;9267:61;:::i;:::-;9376:9;9368:6;9364:22;9359:2;9348:9;9344:18;9337:50;9404:49;9446:6;9438;9430;9404:49;:::i;:::-;9396:57;;;9489:6;9484:2;9473:9;9469:18;9462:34;9000:502;;;;;;;;:::o;9507:127::-;9568:10;9563:3;9559:20;9556:1;9549:31;9599:4;9596:1;9589:15;9623:4;9620:1;9613:15;9639:168;9712:9;;;9743;;9760:15;;;9754:22;;9740:37;9730:71;;9781:18;;:::i;10164:127::-;10225:10;10220:3;10216:20;10213:1;10206:31;10256:4;10253:1;10246:15;10280:4;10277:1;10270:15;10296:125;10361:9;;;10382:10;;;10379:36;;;10395:18;;:::i;11105:286::-;11163:6;11216:2;11204:9;11195:7;11191:23;11187:32;11184:52;;;11232:1;11229;11222:12;11184:52;11258:23;;-1:-1:-1;;;;;;11310:32:48;;11300:43;;11290:71;;11357:1;11354;11347:12;11396:281;11454:6;11507:2;11495:9;11486:7;11482:23;11478:32;11475:52;;;11523:1;11520;11513:12;11475:52;11549:23;;-1:-1:-1;;;;;;11601:27:48;;11591:38;;11581:66;;11643:1;11640;11633:12;11682:521;11759:4;11765:6;11825:11;11812:25;11919:2;11915:7;11904:8;11888:14;11884:29;11880:43;11860:18;11856:68;11846:96;;11938:1;11935;11928:12;11846:96;11965:33;;12017:20;;;-1:-1:-1;12060:18:48;12049:30;;12046:50;;;12092:1;12089;12082:12;12046:50;12125:4;12113:17;;-1:-1:-1;12156:14:48;12152:27;;;12142:38;;12139:58;;;12193:1;12190;12183:12;14026:459;14267:6;14256:9;14249:25;14310:6;14305:2;14294:9;14290:18;14283:34;14353:3;14348:2;14337:9;14333:18;14326:31;14230:4;14374:62;14431:3;14420:9;14416:19;14408:6;14400;14374:62;:::i;:::-;14366:70;;14472:6;14467:2;14456:9;14452:18;14445:34;14026:459;;;;;;;;:::o;14490:277::-;14557:6;14610:2;14598:9;14589:7;14585:23;14581:32;14578:52;;;14626:1;14623;14616:12;14578:52;14658:9;14652:16;14711:5;14704:13;14697:21;14690:5;14687:32;14677:60;;14733:1;14730;14723:12;15829:128;15896:9;;;15917:11;;;15914:37;;;15931:18;;:::i;17216:853::-;-1:-1:-1;;;;;;17575:33:48;;17563:46;;-1:-1:-1;;;;;;17638:28:48;;17634:1;17625:11;;17618:49;17710:6;17702;17698:1;17689:11;;17676:41;17545:3;17745:6;17740:3;17736:16;17779:1;17775:2;17771:10;17801:1;17797:2;17790:13;17837:6;17829;17825:2;17812:32;-1:-1:-1;17906:1:48;17867:15;;;17884:1;17863:23;17895:13;;;17942:6;17934;17863:23;17917:32;-1:-1:-1;;;;;;18003:33:48;;;;17968:15;;;;17992:45;;;-1:-1:-1;18061:1:48;18053:10;;17216:853;-1:-1:-1;;;;;;;;17216:853:48:o;19867:412::-;19985:12;;20033:4;20022:16;;20016:23;-1:-1:-1;;20057:40:48;;;19985:12;20120:2;20109:14;;20106:167;;;20235:26;20231:31;20200:26;20196:31;20186:6;20182:2;20178:15;20175:1;20171:23;20167:61;20163:2;20159:70;20155:108;20146:117;;20106:167;;;19867:412;;;:::o;20284:148::-;20372:4;20351:12;;;20365;;;20347:31;;20390:13;;20387:39;;;20406: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)":"41260137","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.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"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\":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\"}],\"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\",\"errors\":{\"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.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"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.\"},\"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.\"},\"withdraw(bytes32)\":{\"params\":{\"bitcoin_address\":\"The Bitcoin address of the receiver\"}}},\"title\":\"Bridge contract for the Citrea end of Citrea <> Bitcoin bridge\",\"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 the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount 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\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"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/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de\",\"dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w\"]},\"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/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7\",\"dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf\"]},\"src/Bridge.sol\":{\"keccak256\":\"0xe7d77b56775f141e42494ddcb6d242d3199bdabb09078e076ba0053f953c43a9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://62ed60e2acb1a2d3862c3b252b62f277eef1634f11b0e8b50cff6449c8ed8bcc\",\"dweb:/ipfs/Qmeu6q5ddpxj9qUx75vXe7R5p8QEr9oEo8kCtduNk5fng3\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650\",\"dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"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":[{"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":"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"}],"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":{"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."},"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."},"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 the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount 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-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/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/WitnessUtils.sol":{"keccak256":"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af","urls":["bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de","dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w"],"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/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c","urls":["bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7","dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0xe7d77b56775f141e42494ddcb6d242d3199bdabb09078e076ba0053f953c43a9","urls":["bzz-raw://62ed60e2acb1a2d3862c3b252b62f277eef1634f11b0e8b50cff6449c8ed8bcc","dweb:/ipfs/Qmeu6q5ddpxj9qUx75vXe7R5p8QEr9oEo8kCtduNk5fng3"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0x7b7bce470657991ad77890c0f9a3e01570279e6143038ed1b6f82f783feea33a","urls":["bzz-raw://52c1a77b309c61d34eb39b8a77fd5a5f8c154e50fd60db3007f5049d6b06b650","dweb:/ipfs/QmdHbULcAzZtD7u55bkQ8D9FEPMRvy1jgwNC3pFxHtiUfL"],"license":"MIT"}},"version":1},"id":43} \ 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 6d6ecda32..8519db577 100644 --- a/crates/evm/src/evm/system_contracts/src/Bridge.sol +++ b/crates/evm/src/evm/system_contracts/src/Bridge.sol @@ -166,22 +166,38 @@ contract Bridge is Ownable2StepUpgradeable { emit OperatorUpdated(operator, _operator); } - /// @notice Checks if two byte sequences are equal - /// @dev This is not efficient, and a better approach would be doing a hash based comparison but as this is ran in a zkEVM, hashing is inefficient + /// @notice Checks if two byte sequences are equal in chunks of 32 bytes + /// @dev This approach compares chunks of 32 bytes using bytes32 equality checks for optimization /// @param a First byte sequence /// @param b Second byte sequence function isBytesEqual(bytes memory a, bytes memory b) internal pure returns (bool result) { - require(a.length == b.length, "Lengths do not match"); + uint256 len = a.length; + if (len != b.length) { + return false; + } + + uint256 offset = 32; + bytes32 chunkA; + bytes32 chunkB; + while (offset <= len) { + assembly { + chunkA := mload(add(a, offset)) + chunkB := mload(add(b, offset)) + offset := add(offset, 32) + } + if (chunkA != chunkB) { + return false; + } + } - // Cannot use keccak as its costly in ZK environment - uint length = a.length; - for (uint i = 0; i < length; i++) { + // Check remaining bytes (if any) + for (uint i = offset - 32; i < len; i++) { if (a[i] != b[i]) { - result = false; - return result; + return false; } } - result = true; + + return true; } function extractRecipientAddress(bytes memory _script) internal view returns (address) { 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 f0c192022..e11bd21f1 100644 --- a/crates/evm/src/evm/system_contracts/test/Bridge.t.sol +++ b/crates/evm/src/evm/system_contracts/test/Bridge.t.sol @@ -226,7 +226,7 @@ contract BridgeTest is Test { doDeposit(); } - function testBytesEqual() public { + function testBytesEqual() public view { bytes memory a = hex"1234"; bytes memory b = hex"1234"; bytes memory c = hex"1235"; @@ -239,11 +239,32 @@ contract BridgeTest is Test { assert(!bridge.isBytesEqual_(d, e)); assert(bridge.isBytesEqual_(d, f)); - vm.expectRevert(); - bridge.isBytesEqual_(a, d); + assertFalse(bridge.isBytesEqual_(a, d)); + assertFalse(bridge.isBytesEqual_(a, hex"")); + } - vm.expectRevert(); - bridge.isBytesEqual_(a, hex""); + function testBytesEqualEdge() public view { + bytes memory a31 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b"; + bytes memory b31 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b"; + bytes memory c31 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596a"; + assert(bridge.isBytesEqual_(a31, b31)); + assert(!bridge.isBytesEqual_(a31, c31)); + + bytes memory a32 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b5c"; + bytes memory b32 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b5c"; + bytes memory c32 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b5a"; + assert(bridge.isBytesEqual_(a32, b32)); + assert(!bridge.isBytesEqual_(a32, c32)); + + bytes memory a33 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b5c1f"; + bytes memory b33 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b5c1f"; + bytes memory c33 = hex"689059e65a478c636524643c3141f00fe3c27b802580fc12a3da9bc373596b5c1a"; + assert(bridge.isBytesEqual_(a33, b33)); + assert(!bridge.isBytesEqual_(a33, c33)); + + assert(!bridge.isBytesEqual_(a31, a32)); + assert(!bridge.isBytesEqual_(a31, a33)); + assert(!bridge.isBytesEqual_(a32, a33)); } function testBytesEqualFuzz(bytes memory a, bytes memory b) public view { diff --git a/resources/genesis/bitcoin-regtest/evm.json b/resources/genesis/bitcoin-regtest/evm.json index 812a8e169..a07c04b08 100644 --- a/resources/genesis/bitcoin-regtest/evm.json +++ b/resources/genesis/bitcoin-regtest/evm.json @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003", diff --git a/resources/genesis/mock-dockerized/evm.json b/resources/genesis/mock-dockerized/evm.json index 812a8e169..a07c04b08 100644 --- a/resources/genesis/mock-dockerized/evm.json +++ b/resources/genesis/mock-dockerized/evm.json @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003", diff --git a/resources/genesis/mock/evm.json b/resources/genesis/mock/evm.json index 812a8e169..a07c04b08 100644 --- a/resources/genesis/mock/evm.json +++ b/resources/genesis/mock/evm.json @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003", diff --git a/resources/test-data/demo-tests/bitcoin-regtest/evm.json b/resources/test-data/demo-tests/bitcoin-regtest/evm.json index 812a8e169..a07c04b08 100644 --- a/resources/test-data/demo-tests/bitcoin-regtest/evm.json +++ b/resources/test-data/demo-tests/bitcoin-regtest/evm.json @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003", diff --git a/resources/test-data/demo-tests/mock/evm.json b/resources/test-data/demo-tests/mock/evm.json index 812a8e169..a07c04b08 100644 --- a/resources/test-data/demo-tests/mock/evm.json +++ b/resources/test-data/demo-tests/mock/evm.json @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003", 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 c0f54d810..8a002b7f5 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 @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003", 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 812a8e169..a07c04b08 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 @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003", diff --git a/resources/test-data/integration-tests/evm.json b/resources/test-data/integration-tests/evm.json index 812a8e169..a07c04b08 100644 --- a/resources/test-data/integration-tests/evm.json +++ b/resources/test-data/integration-tests/evm.json @@ -76,7 +76,7 @@ { "address": "0x3200000000000000000000000000000000000002", "balance": "0x0", - "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611ea0565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f19565b610624565b34801561020b57600080fd5b5061015461021a366004611f90565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fa9565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611f90565b610853565b3480156102c457600080fd5b506101896102d3366004611ea0565b61091c565b3480156102e457600080fd5b506101896102f3366004611ff7565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611f90565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612020565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db366004611ff7565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff1916600117905560026105568587836120fb565b5060036105648385836120fb565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121e4565b60405180910390a15050505050565b61063581662386f26fc10000612234565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f61224b565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f461224b565b9050602002013582846107079190612261565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612072565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612072565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d28587836120fb565b5060036109e08385836120fb565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121e4565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612072565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612274565b610b3e604085016020860161229e565b610b4b60408601866122c8565b610b5860608801886122c8565b610b6560808a018a6122c8565b610b7560c08c0160a08d01612274565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122c8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122c8565b8861010001356040518663ffffffff1660e01b8152600401610e9995949392919061230f565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612341565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612261565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612072565b915060009050611007838284611840565b905061109d816002805461101a90612072565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612072565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612261565b6110fd856014612261565b86516111099190612363565b869190611840565b9050611124816003805461101a90612072565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119c6565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f826119fc565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a999989796959493929190612376565b604051602081830303815290604052611a6d565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612261565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611a94565b9050600019810361144d575060009695505050505050565b6114578184612261565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612261565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611add565b905060001981036114f1575060009695505050505050565b6114fb8184612261565b9250506001016114b1565b600080611514836000611b41565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611ce5565b90506000198103611571576000935050505061158d565b61157b8184612261565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611ce5565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612261565b915060010161159b565b506116178582611ce5565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612261565b905060005b868110156117bf5761174b8883611b41565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612261565b6117ab9190612261565b6117b59083612261565b9150600101611739565b506117ca8782611b41565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612261565b61182d906001612261565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612261565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b6000815183511461194e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640161043f565b825160005b818110156119bb5783818151811061196d5761196d61224b565b602001015160f81c60f81b6001600160f81b0319168582815181106119945761199461224b565b01602001516001600160f81b031916146119b35760009250505061158d565b600101611953565b506001949350505050565b600080600280546119d690612072565b9150600090506119e884836014611840565b6119f1906123df565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611aa38585611d87565b909250905060018201611abc576000199250505061158d565b80611ac8836025612261565b611ad29190612261565b61166d906004612261565b6000611aea826009612261565b83511015611afb575060001961158d565b600080611b1285611b0d866008612261565b611b41565b909250905060018201611b2b576000199250505061158d565b80611b37836009612261565b61166d9190612261565b6000806000611b508585611dc9565b90508060ff16600003611b85576000858581518110611b7157611b7161224b565b016020015190935060f81c9150611cde9050565b83611b91826001612432565b60ff16611b9e9190612261565b85511015611bb55760001960009250925050611cde565b60008160ff16600203611bf957611bee611bda611bd3876001612261565b8890611e4f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611cd4565b8160ff16600403611c4857611c3b611c15611bd3876001612261565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611cd4565b8160ff16600803611cd457611cc7611c64611bd3876001612261565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611cf48585611b41565b909250905060018201611d0d576000199250505061158d565b600080611d1b846001612261565b905060005b83811015611d7c57611d3688611b0d848a612261565b909550925060018301611d52576000199550505050505061158d565b82611d5e866001612261565b611d689190612261565b611d729083612261565b9150600101611d20565b509695505050505050565b600080611d95836025612261565b84511015611daa575060001990506000611cde565b600080611dbc86611b0d876024612261565b9097909650945050505050565b6000828281518110611ddd57611ddd61224b565b016020015160f81c60ff03611df45750600861158d565b828281518110611e0657611e0661224b565b016020015160f81c60fe03611e1d5750600461158d565b828281518110611e2f57611e2f61224b565b016020015160f81c60fd03611e465750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e7057600080fd5b50813567ffffffffffffffff811115611e8857600080fd5b602083019150836020828501011115611cde57600080fd5b600080600080600060608688031215611eb857600080fd5b853567ffffffffffffffff811115611ecf57600080fd5b611edb88828901611e5e565b909650945050602086013567ffffffffffffffff811115611efb57600080fd5b611f0788828901611e5e565b96999598509660400135949350505050565b60008060208385031215611f2c57600080fd5b823567ffffffffffffffff811115611f4357600080fd5b8301601f81018513611f5457600080fd5b803567ffffffffffffffff811115611f6b57600080fd5b8560208260051b8401011115611f8057600080fd5b6020919091019590945092505050565b600060208284031215611fa257600080fd5b5035919050565b602081526000825180602084015260005b81811015611fd75760208186018101516040868401015201611fba565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561200957600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561203257600080fd5b813567ffffffffffffffff81111561204957600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061208657607f821691505b6020821081036120a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156120f657806000526020600020601f840160051c810160208510156120d35750805b601f840160051c820191505b818110156120f357600081556001016120df565b50505b505050565b67ffffffffffffffff8311156121135761211361205c565b612127836121218354612072565b836120ac565b6000601f84116001811461215b57600085156121435750838201355b600019600387901b1c1916600186901b1783556120f3565b600083815260209020601f19861690835b8281101561218c578685013582556020948501946001909201910161216c565b50868210156121a95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121f86060830187896121bb565b828103602084015261220b8186886121bb565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d61221e565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d61221e565b60006020828403121561228657600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122b057600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122df57600080fd5b83018035915067ffffffffffffffff8211156122fa57600080fd5b602001915036819003821315611cde57600080fd5b85815284602082015260806040820152600061232f6080830185876121bb565b90508260608301529695505050505050565b60006020828403121561235357600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d61221e565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff1981169190601482101561242b576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61221e56" + "code": "0x6080604052600436106101355760003560e01c80638e19899e116100ab578063d761753e1161006f578063d761753e1461032d578063dd95c7c614610355578063e30c397814610375578063e613ae001461038a578063ec6925a7146103a5578063f2fde38b146103c057600080fd5b80638e19899e146102a55780639f963f59146102b8578063b3ab15fb146102d8578063b93780f6146102f8578063d1c444561461030d57600080fd5b80635e0e5b3e116100fd5780635e0e5b3e146101ff578063715018a61461022f578063781952a81461024457806379ba50971461025957806387f8bf561461026e5780638da5cb5b1461029057600080fd5b8063158ef93e1461013a578063412601371461016957806343e316871461018b578063570ca735146101af57806359c19cee146101ec575b600080fd5b34801561014657600080fd5b506000546101549060ff1681565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611eb5565b6103e0565b005b34801561019757600080fd5b506101a160015481565b604051908152602001610160565b3480156101bb57600080fd5b506000546101d49061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610160565b6101896101fa366004611f2e565b610624565b34801561020b57600080fd5b5061015461021a366004611fa5565b60046020526000908152604090205460ff1681565b34801561023b57600080fd5b50610189610734565b34801561025057600080fd5b506005546101a1565b34801561026557600080fd5b50610189610748565b34801561027a57600080fd5b50610283610790565b6040516101609190611fbe565b34801561029c57600080fd5b506101d461081e565b6101896102b3366004611fa5565b610853565b3480156102c457600080fd5b506101896102d3366004611eb5565b61091c565b3480156102e457600080fd5b506101896102f336600461200c565b610a1e565b34801561030457600080fd5b50610283610a8f565b34801561031957600080fd5b506101a1610328366004611fa5565b610a9c565b34801561033957600080fd5b506101d473deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561036157600080fd5b50610189610370366004612035565b610abd565b34801561038157600080fd5b506101d4611267565b34801561039657600080fd5b506101d46001603160981b0181565b3480156103b157600080fd5b506101a1662386f26fc1000081565b3480156103cc57600080fd5b506101896103db36600461200c565b611290565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146104485760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60005460ff161561049b5760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a656400604482015260640161043f565b806000036104eb5760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b600084900361053c5760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b6000805460ff191660011790556002610556858783612110565b506003610564838583612110565b50600181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c3485858585856040516106159594939291906121f9565b60405180910390a15050505050565b61063581662386f26fc10000612249565b341461067d5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b60055460005b8281101561072e57600584848381811061069f5761069f612260565b835460018101855560009485526020948590209190940292909201359190920155507fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b8484838181106106f4576106f4612260565b9050602002013582846107079190612276565b604080519283526020830191909152429082015260600160405180910390a1600101610683565b50505050565b61073c611315565b6107466000611347565b565b3380610752611267565b6001600160a01b0316146107845760405163118cdaa760e01b81526001600160a01b038216600482015260240161043f565b61078d81611347565b50565b6003805461079d90612087565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990612087565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505081565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b662386f26fc1000034146108a35760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b604482015260640161043f565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018290556040805183815260208101839052428183015290517fc96d1af655ee5eb07357bb1097f3b2f247ea0c4e3cf5f9a5c8449c4f8b64fb6b9181900360600190a15050565b610924611315565b806000036109745760405162461bcd60e51b815260206004820152601a60248201527f566572696669657220636f756e742063616e6e6f742062652030000000000000604482015260640161043f565b60008490036109c55760405162461bcd60e51b815260206004820152601e60248201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604482015260640161043f565b60026109d2858783612110565b5060036109e0838583612110565b5060018190556040517f89ed79f38bee253aee2fb8d52df0d71b4aaf0843800d093a499a55eeca455c349061061590879087908790879087906121f9565b610a26611315565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6002805461079d90612087565b60058181548110610aac57600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015260640161043f565b6000610b7a610b2e6020840184612289565b610b3e60408501602086016122b3565b610b4b60408601866122dd565b610b5860608801886122dd565b610b6560808a018a6122dd565b610b7560c08c0160a08d01612289565b611383565b60008181526004602052604090205490915060ff1615610bd25760405162461bcd60e51b81526020600482015260136024820152721ddd1e125908185b1c9958591e481cdc195b9d606a1b604482015260640161043f565b60008181526004602052604090819020805460ff19166001179055610c3790610bfd908401846122dd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113cb92505050565b610c835760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d6174746564000000604482015260640161043f565b610ccd610c9360608401846122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061146f92505050565b610d195760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d61747465640000604482015260640161043f565b6000610d65610d2b60408501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150692505050565b91505080600114610db15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b604482015260640161043f565b610dfd610dc160808501856122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061151d915050565b610e535760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b606482015260840161043f565b6001603160981b01634ffd344a60e085013584610e7360c08801886122dd565b8861010001356040518663ffffffff1660e01b8152600401610e99959493929190612324565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190612356565b610f265760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b0000000000604482015260640161043f565b6000610f72610f3860808601866122dd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611593915050565b90506000610f7f82611506565b9150506001546002610f919190612276565b8114610fd75760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b604482015260640161043f565b6000610fe583600154611676565b9050600060028054610ff690612087565b915060009050611007838284611840565b905061109d816002805461101a90612087565b80601f016020809104026020016040519081016040528092919081815260200182805461104690612087565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050611904565b6110e25760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b604482015260640161043f565b60006111116110f2846014612276565b6110fd856014612276565b86516111099190612378565b869190611840565b9050611124816003805461101a90612087565b6111685760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b604482015260640161043f565b6000611173856119db565b604080518b81526001600160a01b0383166020820152428183015290519192507f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac919081900360600190a16000816001600160a01b0316662386f26fc1000060405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508061125a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161043f565b5050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610843565b611298611315565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556112dc61081e565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361131e61081e565b6001600160a01b0316146107465760405163118cdaa760e01b815233600482015260240161043f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561137f82611a11565b5050565b60006113bd8a8a8a8a8a8a8a8a8a6040516020016113a99998979695949392919061238b565b604051602081830303815290604052611a82565b9a9950505050505050505050565b60008060006113d984611506565b90925090508015806113ec575060001982145b156113fb575060009392505050565b6000611408836001612276565b905060005b8281101561146257855182106114295750600095945050505050565b60006114358784611aa9565b9050600019810361144d575060009695505050505050565b6114578184612276565b92505060010161140d565b5093519093149392505050565b600080600061147d84611506565b9092509050801580611490575060001982145b1561149f575060009392505050565b60006114ac836001612276565b905060005b8281101561146257855182106114cd5750600095945050505050565b60006114d98784611af2565b905060001981036114f1575060009695505050505050565b6114fb8184612276565b9250506001016114b1565b600080611514836000611b56565b91509150915091565b60008160000361152f5750600061158d565b6000805b83811015611586578451821061154e5760009250505061158d565b600061155a8684611cfa565b90506000198103611571576000935050505061158d565b61157b8184612276565b925050600101611533565b5083511490505b92915050565b606060008060005b8481101561160c576115ad8683611cfa565b925060001983036115f85760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b6116028383612276565b915060010161159b565b506116178582611cfa565b915060001982036116625760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b604482015260640161043f565b61166d858284611840565b95945050505050565b606060008061168485611506565b9092509050600182016116e45760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b606482015260840161043f565b8084106117265760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b604482015260640161043f565b600080611734846001612276565b905060005b868110156117bf5761174b8883611b56565b9095509250600183016117955760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b826117a1866001612276565b6117ab9190612276565b6117b59083612276565b9150600101611739565b506117ca8782611b56565b9094509150600182016118145760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b604482015260640161043f565b611835816118228685612276565b61182d906001612276565b899190611840565b979650505050505050565b60608160000361185f57506040805160208101909152600081526118fd565b600061186b8385612276565b9050838111801561187d575080855110155b6118bf5760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015260640161043f565b604051915082604083010160405282825283850182038460208701018481015b808210156118f8578151838301526020820191506118df565b505050505b9392505050565b8151815160009190811461191c57600091505061158d565b60206000805b838311611952575050848101518482015160209092019180821461194d57600094505050505061158d565b611922565b600061195f602085612378565b90505b848110156119cd5786818151811061197c5761197c612260565b602001015160f81c60f81b6001600160f81b0319168882815181106119a3576119a3612260565b01602001516001600160f81b031916146119c55760009550505050505061158d565b600101611962565b506001979650505050505050565b600080600280546119eb90612087565b9150600090506119fd84836014611840565b611a06906123f4565b60601c949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6000806000611ab88585611d9c565b909250905060018201611ad1576000199250505061158d565b80611add836025612276565b611ae79190612276565b61166d906004612276565b6000611aff826009612276565b83511015611b10575060001961158d565b600080611b2785611b22866008612276565b611b56565b909250905060018201611b40576000199250505061158d565b80611b4c836009612276565b61166d9190612276565b6000806000611b658585611dde565b90508060ff16600003611b9a576000858581518110611b8657611b86612260565b016020015190935060f81c9150611cf39050565b83611ba6826001612447565b60ff16611bb39190612276565b85511015611bca5760001960009250925050611cf3565b60008160ff16600203611c0e57611c03611bef611be8876001612276565b8890611e64565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ce9565b8160ff16600403611c5d57611c50611c2a611be8876001612276565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ce9565b8160ff16600803611ce957611cdc611c79611be8876001612276565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000806000611d098585611b56565b909250905060018201611d22576000199250505061158d565b600080611d30846001612276565b905060005b83811015611d9157611d4b88611b22848a612276565b909550925060018301611d67576000199550505050505061158d565b82611d73866001612276565b611d7d9190612276565b611d879083612276565b9150600101611d35565b509695505050505050565b600080611daa836025612276565b84511015611dbf575060001990506000611cf3565b600080611dd186611b22876024612276565b9097909650945050505050565b6000828281518110611df257611df2612260565b016020015160f81c60ff03611e095750600861158d565b828281518110611e1b57611e1b612260565b016020015160f81c60fe03611e325750600461158d565b828281518110611e4457611e44612260565b016020015160f81c60fd03611e5b5750600261158d565b50600092915050565b60006118fd8383016020015190565b60008083601f840112611e8557600080fd5b50813567ffffffffffffffff811115611e9d57600080fd5b602083019150836020828501011115611cf357600080fd5b600080600080600060608688031215611ecd57600080fd5b853567ffffffffffffffff811115611ee457600080fd5b611ef088828901611e73565b909650945050602086013567ffffffffffffffff811115611f1057600080fd5b611f1c88828901611e73565b96999598509660400135949350505050565b60008060208385031215611f4157600080fd5b823567ffffffffffffffff811115611f5857600080fd5b8301601f81018513611f6957600080fd5b803567ffffffffffffffff811115611f8057600080fd5b8560208260051b8401011115611f9557600080fd5b6020919091019590945092505050565b600060208284031215611fb757600080fd5b5035919050565b602081526000825180602084015260005b81811015611fec5760208186018101516040868401015201611fcf565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561201e57600080fd5b81356001600160a01b03811681146118fd57600080fd5b60006020828403121561204757600080fd5b813567ffffffffffffffff81111561205e57600080fd5b820161012081850312156118fd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061209b57607f821691505b6020821081036120bb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561210b57806000526020600020601f840160051c810160208510156120e85750805b601f840160051c820191505b8181101561210857600081556001016120f4565b50505b505050565b67ffffffffffffffff83111561212857612128612071565b61213c836121368354612087565b836120c1565b6000601f84116001811461217057600085156121585750838201355b600019600387901b1c1916600186901b178355612108565b600083815260209020601f19861690835b828110156121a15786850135825560209485019460019092019101612181565b50868210156121be5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061220d6060830187896121d0565b82810360208401526122208186886121d0565b9150508260408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158d5761158d612233565b634e487b7160e01b600052603260045260246000fd5b8082018082111561158d5761158d612233565b60006020828403121561229b57600080fd5b81356001600160e01b0319811681146118fd57600080fd5b6000602082840312156122c557600080fd5b81356001600160f01b0319811681146118fd57600080fd5b6000808335601e198436030181126122f457600080fd5b83018035915067ffffffffffffffff82111561230f57600080fd5b602001915036819003821315611cf357600080fd5b8581528460208201526080604082015260006123446080830185876121d0565b90508260608301529695505050505050565b60006020828403121561236857600080fd5b815180151581146118fd57600080fd5b8181038181111561158d5761158d612233565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015612440576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b60ff818116838216019081111561158d5761158d61223356" }, { "address": "0x3200000000000000000000000000000000000003",