diff --git a/config/environments/local/local.genesis.config.json b/config/environments/local/local.genesis.config.json index c6cc233a8d..d4caae4a65 100644 --- a/config/environments/local/local.genesis.config.json +++ b/config/environments/local/local.genesis.config.json @@ -1,16 +1,15 @@ { - "root": "0x382794d29a63231a4fc50a343ac78007b32034e4c77ab6d78d951af90ba4ab02", + "root": "0x16851d9301e0a13a24dab6b0baec16a73502cdce67e3d3efa2629c86940d34f4", "genesis": [ { - "balance": "100000000000000000000000", + "balance": "200000000000000000000000000", "nonce": "1", "address": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", - "bytecode": "0x608060405260043610620001585760003560e01c80630871e971146200015d57806315064c9614620001765780632072f6c514620001a757806322e95f2c14620001bf5780632dfdf0b514620001fd578063318aee3d14620002245780633ae0504714620002925780633da8168214620002aa5780633e19704314620002cf5780634638554914620002f4578063647c576c1462000319578063715018a6146200033e5780637b6323c1146200035657806381b1c174146200037b5780638da5cb5b14620003b55780638f61151914620003cd5780639e34070f14620003ef578063a08e8a081462000414578063aaa13cc2146200043e578063bab161bf1462000463578063d02103ca1462000498578063d96a15f714620004ba578063dbc1697614620004d1578063ed6be5c914620004e9578063ee25560b1462000500578063f2fde38b1462000531578063ff634ed71462000556575b600080fd5b620001746200016e36600462002529565b6200056d565b005b3480156200018357600080fd5b50602254620001929060ff1681565b60405190151581526020015b60405180910390f35b348015620001b457600080fd5b506200017462000998565b348015620001cc57600080fd5b50620001e4620001de366004620025b5565b620009d1565b6040516001600160a01b0390911681526020016200019e565b3480156200020a57600080fd5b506200021560215481565b6040519081526020016200019e565b3480156200023157600080fd5b506200026d62000243366004620025f1565b608a6020526000908152604090205463ffffffff811690600160201b90046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200019e565b3480156200029f57600080fd5b506200021562000a24565b348015620002b757600080fd5b5062000192620002c9366004620026de565b62000b18565b348015620002dc57600080fd5b5062000215620002ee3660046200275b565b62000c09565b3480156200030157600080fd5b5062000174620003133660046200286b565b62000c96565b3480156200032657600080fd5b50620001746200033836600462002951565b62000e1e565b3480156200034b57600080fd5b506200017462000f8b565b3480156200036357600080fd5b5062000174620003753660046200286b565b62000fa1565b3480156200038857600080fd5b50620001e46200039a366004620029a1565b6089602052600090815260409020546001600160a01b031681565b348015620003c257600080fd5b50620001e46200142b565b348015620003da57600080fd5b50608c54620001e4906001600160a01b031681565b348015620003fc57600080fd5b50620001926200040e366004620029a1565b6200143a565b3480156200042157600080fd5b506200042b600081565b60405160ff90911681526020016200019e565b3480156200044b57600080fd5b50620001e46200045d366004620029bb565b6200147f565b3480156200047057600080fd5b50608754620004829063ffffffff1681565b60405163ffffffff90911681526020016200019e565b348015620004a557600080fd5b50608b54620001e4906001600160a01b031681565b62000174620004cb36600462002a6e565b62001596565b348015620004de57600080fd5b5062000174620016d0565b348015620004f657600080fd5b5062000482600081565b3480156200050d57600080fd5b50620002156200051f366004620029a1565b60886020526000908152604090205481565b3480156200053e57600080fd5b506200017462000550366004620025f1565b62001707565b3480156200056357600080fd5b506200042b600181565b60225460ff16156200059c5760405162461bcd60e51b8152600401620005939062002ad5565b60405180910390fd5b60875463ffffffff90811690861603620005ca5760405162461bcd60e51b8152600401620005939062002b3d565b60008060606001600160a01b0389166200065157853414620006475760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201526e4d415443485f4d53475f56414c554560881b606482015260840162000593565b60009150620008c3565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff81168352600160201b900490921691810182905290156200072057604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006c79033908b9060040162002b87565b6020604051808303816000875af1158015620006e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200070d919062002baf565b50602081015181519094509250620008c1565b84156200073557620007358a88888862001786565b6200074c6001600160a01b038b1633308a62001b8a565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007cd919081019062002c4a565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200080c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000836919081019062002c4a565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200089b919062002c82565b604051602001620008af9392919062002cd0565b60405160208183030381529060405291505b505b60008051602062004888833981519152600083858b8b8b87602154604051620008f498979695949392919062002d0d565b60405180910390a16200091f62000919600084868c8c8c888051906020012062000c09565b62001bf7565b608b546001600160a01b03166333d6247d6200093a62000a24565b6040518263ffffffff1660e01b81526004016200095991815260200190565b600060405180830381600087803b1580156200097457600080fd5b505af115801562000989573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b03163314620009c55760405162461bcd60e51b8152600401620005939062002d7a565b620009cf62001d48565b565b6000608960008484604051602001620009ec92919062002deb565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b0f578260011660010362000a8f576001816020811062000a5b5762000a5b62002e15565b01548460405160200162000a7192919062002e2b565b60405160208183030381529060405280519060200120935062000abd565b838260405160200162000aa492919062002e2b565b6040516020818303038152906040528051906020012093505b62000aca60028462002e65565b9250818260405160200162000ae192919062002e2b565b604051602081830303815290604052805190602001209150808062000b069062002e7c565b91505062000a2f565b50919392505050565b6000846001600160401b038416825b602081101562000bfa578160011660010362000b8c5786818151811062000b525762000b5262002e15565b60200260200101518360405160200162000b6e92919062002e2b565b60405160208183030381529060405280519060200120925062000bd6565b8287828151811062000ba25762000ba262002e15565b602002602001015160405160200162000bbd92919062002e2b565b6040516020818303038152906040528051906020012092505b62000be360028362002e65565b91508062000bf18162002e7c565b91505062000b27565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000cbc5760405162461bcd60e51b8152600401620005939062002ad5565b62000cd28a8a8a8a8a8a8a8a8a8a600162001da6565b62000ce38963ffffffff1662002033565b6000836001600160a01b03168387898560405160240162000d079392919062002e98565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d3e919062002ed3565b60006040518083038185875af1925050503d806000811462000d7d576040519150601f19603f3d011682016040523d82523d6000602084013e62000d82565b606091505b505090508062000de15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f46416044820152631253115160e21b606482015260840162000593565b600080516020620048a88339815191528a8888878760405162000e0995949392919062002ef1565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000e3f5750600054600160ff909116105b8062000e64575062000e513062002075565b15801562000e64575060005460ff166001145b62000ec95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000593565b6000805460ff19166001179055801562000eed576000805461ff0019166101001790555b6087805463ffffffff861663ffffffff19909116179055608b80546001600160a01b038086166001600160a01b031992831617909255608c80549285169290911691909117905562000f3e62002084565b801562000f85576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b62000f95620020fc565b620009cf60006200215f565b60225460ff161562000fc75760405162461bcd60e51b8152600401620005939062002ad5565b62000fdd8a8a8a8a8a8a8a8a8a8a600062001da6565b62000fee8963ffffffff1662002033565b6001600160a01b038516620010d757604080516000808252602082019092526001600160a01b03851690849060405162001029919062002ed3565b60006040518083038185875af1925050503d806000811462001068576040519150601f19603f3d011682016040523d82523d6000602084013e6200106d565b606091505b5050905080620010d05760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201526617d1905253115160ca1b606482015260840162000593565b50620013ef565b60875463ffffffff908116908716036200110757620011016001600160a01b0386168484620021b1565b620013ef565b600086866040516020016200111e92919062002deb565b60408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620013745760008060008580602001905181019062001170919062002f28565b9250925092506000858484846040516200118a9062002493565b620011989392919062002cd0565b8190604051809103906000f5905080158015620011b9573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f1990620011ed908c908c9060040162002b87565b6020604051808303816000875af11580156200120d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001233919062002baf565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013629392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a150505050620013ec565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013a4908890889060040162002b87565b6020604051808303816000875af1158015620013c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013ea919062002baf565b505b50505b600080516020620048a883398151915289878786866040516200141795949392919062002ef1565b60405180910390a150505050505050505050565b6055546001600160a01b031690565b6000806200144b6101008462002e65565b905060006200145d6101008562002f9d565b60009283526088602052604090922054600190921b9182169091149392505050565b60008088886040516020016200149792919062002deb565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014ca9062002493565b601f1982820381018352601f909101166040819052620014f7908d908d908d908d908d9060200162002fdd565b60408051601f19818403018152908290526200151792916020016200301e565b604051602081830303815290604052805190602001206040516020016200157094939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015bc5760405162461bcd60e51b8152600401620005939062002ad5565b60875463ffffffff90811690841603620015ea5760405162461bcd60e51b8152600401620005939062002b3d565b6087546021546040516000805160206200488883398151915292620016269260019263ffffffff9092169133918991899134918a919062002d0d565b60405180910390a16200165d620009196001608760009054906101000a900463ffffffff1633878734888051906020012062000c09565b608b546001600160a01b03166333d6247d6200167862000a24565b6040518263ffffffff1660e01b81526004016200169791815260200190565b600060405180830381600087803b158015620016b257600080fd5b505af1158015620016c7573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b03163314620016fd5760405162461bcd60e51b8152600401620005939062002d7a565b620009cf620021d3565b62001711620020fc565b6001600160a01b038116620017785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000593565b62001783816200215f565b50565b6000620017c983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200228092505050565b9050632afa533160e01b6001600160e01b0319821601620019b2576000808080808080620017fb896004818d62003051565b8101906200180a91906200307d565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200184c5760405162461bcd60e51b81526004016200059390620030d8565b6001600160a01b0386163014620018775760405162461bcd60e51b8152600401620005939062003128565b8a8514620018de5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201526c09e8aa6be9c9ea8be9a82a8869609b1b606482015260840162000593565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200195e919062002ed3565b6000604051808303816000865af19150503d80600081146200199d576040519150601f19603f3d011682016040523d82523d6000602084013e620019a2565b606091505b5050505050505050505062001b83565b6001600160e01b031981166323f2ebc360e21b1462001a145760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c00604482015260640162000593565b60008080808080808062001a2c8a6004818e62003051565b81019062001a3b91906200316d565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001a7f5760405162461bcd60e51b81526004016200059390620030d8565b6001600160a01b038716301462001aaa5760405162461bcd60e51b8152600401620005939062003128565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b33919062002ed3565b6000604051808303816000865af19150503d806000811462001b72576040519150601f19603f3d011682016040523d82523d6000602084013e62001b77565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000f859085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262002287565b80600162001c0860206002620032f6565b62001c14919062003304565b6021541062001c795760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201526917d514915157d195531360b21b606482015260840162000593565b60016021600082825462001c8e91906200331e565b909155505060215460005b602081101562001d38578160011660010362001cce57826001826020811062001cc65762001cc662002e15565b015550505050565b6001816020811062001ce45762001ce462002e15565b01548360405160200162001cfa92919062002e2b565b60405160208183030381529060405280519060200120925060028262001d21919062002e65565b91508062001d2f8162002e7c565b91505062001c99565b5062001d4362003339565b505050565b60225460ff161562001d6e5760405162461bcd60e51b8152600401620005939062002ad5565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001db78a63ffffffff166200143a565b1562001e125760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c416044820152631253515160e21b606482015260840162000593565b608b546040516000916001600160a01b03169063257b36329062001e3d908d908d9060200162002e2b565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040162001e7291815260200190565b6020604051808303816000875af115801562001e92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eb891906200334f565b90508060000362001f225760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201526c17d493d3d517d2539590531251609a1b606482015260840162000593565b60875463ffffffff87811691161462001f9e5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e6044820152760be9c8aa8ae9ea496be889e8aa6be9c9ea8be9a82a8869604b1b606482015260840162000593565b60875460009063ffffffff1662001fb757508862001fba565b50895b62001fe562001fd6848b8b8b8b8b8b8051906020012062000c09565b8e8e63ffffffff168462000b18565b620009895760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c4944604482015260640162000593565b6000620020436101008362002e65565b90506000620020556101008462002f9d565b6000928352608860205260409092208054600190931b9092179091555050565b6001600160a01b03163b151590565b600054610100900460ff16620020f15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000593565b620009cf336200215f565b33620021076200142b565b6001600160a01b031614620009cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000593565b605580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62001d438363a9059cbb60e01b848460405160240162001bbf92919062002b87565b60225460ff166200224b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527a74653a206f6e6c7920696620656d657267656e637920737461746560281b606482015260840162000593565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620022de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620023609092919063ffffffff16565b80519091501562001d435780806020019051810190620022ff919062002baf565b62001d435760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000593565b606062000c01848460008585600080866001600160a01b031685876040516200238a919062002ed3565b60006040518083038185875af1925050503d8060008114620023c9576040519150601f19603f3d011682016040523d82523d6000602084013e620023ce565b606091505b5091509150620023e187838387620023ec565b979650505050505050565b606083156200246057825160000362002458576200240a8562002075565b620024585760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000593565b508162000c01565b62000c018383815115620024775781518083602001fd5b8060405162461bcd60e51b815260040162000593919062003369565b611509806200337f83390190565b6001600160a01b03811681146200178357600080fd5b8035620024c481620024a1565b919050565b803563ffffffff81168114620024c457600080fd5b60008083601f840112620024f157600080fd5b5081356001600160401b038111156200250957600080fd5b6020830191508360208285010111156200252257600080fd5b9250929050565b60008060008060008060a087890312156200254357600080fd5b86356200255081620024a1565b95506200256060208801620024c9565b945060408701356200257281620024a1565b93506060870135925060808701356001600160401b038111156200259557600080fd5b620025a389828a01620024de565b979a9699509497509295939492505050565b60008060408385031215620025c957600080fd5b620025d483620024c9565b91506020830135620025e681620024a1565b809150509250929050565b6000602082840312156200260457600080fd5b81356200261181620024a1565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002659576200265962002618565b604052919050565b600082601f8301126200267357600080fd5b813560206001600160401b0382111562002691576200269162002618565b8160051b620026a28282016200262e565b9283528481018201928281019087851115620026bd57600080fd5b83870192505b84831015620023e157823582529183019190830190620026c3565b60008060008060808587031215620026f557600080fd5b8435935060208501356001600160401b03808211156200271457600080fd5b620027228883890162002661565b94506040870135915080821682146200273a57600080fd5b509396929550929360600135925050565b60ff811681146200178357600080fd5b600080600080600080600060e0888a0312156200277757600080fd5b873562002784816200274b565b96506200279460208901620024c9565b95506040880135620027a681620024a1565b9450620027b660608901620024c9565b93506080880135620027c881620024a1565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b0382111562002801576200280162002618565b50601f01601f191660200190565b600082601f8301126200282157600080fd5b8135620028386200283282620027e5565b6200262e565b8181528460208386010111156200284e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200288c57600080fd5b8a356001600160401b0380821115620028a457600080fd5b620028b28e838f0162002661565b9b50620028c260208e01620024c9565b9a5060408d0135995060608d01359850620028e060808e01620024c9565b9750620028f060a08e01620024b7565b96506200290060c08e01620024c9565b95506200291060e08e01620024b7565b94506101008d013593506101208d01359150808211156200293057600080fd5b506200293f8d828e016200280f565b9150509295989b9194979a5092959850565b6000806000606084860312156200296757600080fd5b6200297284620024c9565b925060208401356200298481620024a1565b915060408401356200299681620024a1565b809150509250925092565b600060208284031215620029b457600080fd5b5035919050565b600080600080600080600060a0888a031215620029d757600080fd5b620029e288620024c9565b96506020880135620029f481620024a1565b955060408801356001600160401b038082111562002a1157600080fd5b62002a1f8b838c01620024de565b909750955060608a013591508082111562002a3957600080fd5b5062002a488a828b01620024de565b909450925050608088013562002a5e816200274b565b8091505092959891949750929550565b60008060006060848603121562002a8457600080fd5b62002a8f84620024c9565b9250602084013562002aa181620024a1565b915060408401356001600160401b0381111562002abd57600080fd5b62002acb868287016200280f565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6020808252602a908201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e546040820152692fa122afa4aa29a2a62360b11b606082015260800190565b6001600160a01b03929092168252602082015260400190565b80151581146200178357600080fd5b60006020828403121562002bc257600080fd5b8151620026118162002ba0565b60005b8381101562002bec57818101518382015260200162002bd2565b8381111562000f855750506000910152565b600082601f83011262002c1057600080fd5b815162002c216200283282620027e5565b81815284602083860101111562002c3757600080fd5b62000c0182602083016020870162002bcf565b60006020828403121562002c5d57600080fd5b81516001600160401b0381111562002c7457600080fd5b62000c018482850162002bfe565b60006020828403121562002c9557600080fd5b815162002611816200274b565b6000815180845262002cbc81602086016020860162002bcf565b601f01601f19169290920160200192915050565b60608152600062002ce5606083018662002ca2565b828103602084015262002cf9818662002ca2565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002d618483018762002ca2565b925080851660e085015250509998505050505050505050565b6020808252604b908201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660408201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60608201526a18de4818dbdb9d1c9858dd60aa1b608082015260a00190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b918252602082015260400190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002e775762002e7762002e39565b500490565b60006001820162002e915762002e9162002e4f565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002eca9083018462002ca2565b95945050505050565b6000825162002ee781846020870162002bcf565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002f3e57600080fd5b83516001600160401b038082111562002f5657600080fd5b62002f648783880162002bfe565b9450602086015191508082111562002f7b57600080fd5b5062002f8a8682870162002bfe565b925050604084015162002996816200274b565b60008262002faf5762002faf62002e39565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002ff360608301878962002fb4565b82810360208401526200300881868862002fb4565b91505060ff831660408301529695505050505050565b600083516200303281846020880162002bcf565b8351908301906200304881836020880162002bcf565b01949350505050565b600080858511156200306257600080fd5b838611156200307057600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200309957600080fd5b8735620030a681620024a1565b96506020880135620030b881620024a1565b955060408801359450606088013593506080880135620027c8816200274b565b60208082526030908201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560408201526f29aa2fa122afaa2422afa9a2a72222a960811b606082015260800190565b60208082526025908201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f42456040820152645f5448495360d81b606082015260800190565b600080600080600080600080610100898b0312156200318b57600080fd5b88356200319881620024a1565b97506020890135620031aa81620024a1565b965060408901359550606089013594506080890135620031ca8162002ba0565b935060a0890135620031dc816200274b565b979a969950949793969295929450505060c08201359160e0013590565b600181815b808511156200323a5781600019048211156200321e576200321e62002e4f565b808516156200322c57918102915b93841c9390800290620031fe565b509250929050565b600082620032535750600162000a1e565b81620032625750600062000a1e565b81600181146200327b57600281146200328657620032a6565b600191505062000a1e565b60ff8411156200329a576200329a62002e4f565b50506001821b62000a1e565b5060208310610133831016604e8410600b8410161715620032cb575081810a62000a1e565b620032d78383620031f9565b8060001904821115620032ee57620032ee62002e4f565b029392505050565b600062002611838362003242565b60008282101562003319576200331962002e4f565b500390565b6000821982111562003334576200333462002e4f565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200336257600080fd5b5051919050565b60208152600062002611602083018462002ca256fe60c06040523480156200001157600080fd5b5060405162001509380380620015098339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161104f620004ba60003960006104150152600081816102a301526103df015261104f6000f3fe608060405234801561001057600080fd5b50600436106101075760003560e01c806306fdde031461010c578063095ea7b31461012a57806318160ddd1461014d57806320606b701461015f57806323b872dd1461017457806330adf81f14610187578063313ce5671461019c5780633644e515146101bb57806339509351146101c357806340c10f19146101d657806370a08231146101e95780637ecebe001461021257806395d89b41146102325780639dc29fac1461023a578063a3c573eb1461024d578063a457c2d714610278578063a9059cbb1461028b578063cd0d00961461029e578063d505accf146102c5578063dd62ed3e146102da578063ffa1ad74146102ed575b600080fd5b61011461030d565b6040516101219190610d55565b60405180910390f35b61013d610138366004610dc6565b61039f565b6040519015158152602001610121565b6002545b604051908152602001610121565b610151600080516020610ffa83398151915281565b61013d610182366004610df0565b6103b7565b610151600080516020610fda83398151915281565b600554600160a01b900460ff1660405160ff9091168152602001610121565b6101516103db565b61013d6101d1366004610dc6565b610437565b61013d6101e4366004610dc6565b610459565b6101516101f7366004610e2c565b6001600160a01b031660009081526020819052604090205490565b610151610220366004610e2c565b60066020526000908152604090205481565b6101146104a2565b61013d610248366004610dc6565b6104b1565b600554610260906001600160a01b031681565b6040516001600160a01b039091168152602001610121565b61013d610286366004610dc6565b6104e8565b61013d610299366004610dc6565b610563565b6101517f000000000000000000000000000000000000000000000000000000000000000081565b6102d86102d3366004610e4e565b610571565b005b6101516102e8366004610ec1565b61079a565b610114604051806040016040528060018152602001603160f81b81525081565b60606003805461031c90610ef4565b80601f016020809104026020016040519081016040528092919081815260200182805461034890610ef4565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000336103ad8185856107c5565b5060019392505050565b6000336103c58582856108ea565b6103d0858585610964565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104125761040d46610af6565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000336103ad81858561044a838361079a565b6104549190610f44565b6107c5565b6005546000906001600160a01b0316331461048f5760405162461bcd60e51b815260040161048690610f5c565b60405180910390fd5b6104998383610b90565b50600192915050565b60606004805461031c90610ef4565b6005546000906001600160a01b031633146104de5760405162461bcd60e51b815260040161048690610f5c565b6104998383610c3d565b600033816104f6828661079a565b9050838110156105565760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610486565b6103d082868684036107c5565b6000336103ad818585610964565b834211156105cd5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b6064820152608401610486565b6001600160a01b03871660009081526006602052604081208054600080516020610fda833981519152918a918a918a91908661060883610fa0565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106666103db565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156106f1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107275750896001600160a01b0316816001600160a01b0316145b6107835760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b6064820152608401610486565b61078e8a8a8a6107c5565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610486565b6001600160a01b0382166108885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610486565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006108f6848461079a565b9050600019811461095e57818110156109515760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610486565b61095e84848484036107c5565b50505050565b6001600160a01b0383166109c85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610486565b6001600160a01b038216610a2a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610486565b6001600160a01b03831660009081526020819052604090205481811015610aa25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610486565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020610fba833981519152910160405180910390a361095e565b6000600080516020610ffa833981519152610b0f61030d565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610be65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610486565b8060026000828254610bf89190610f44565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020610fba833981519152910160405180910390a35050565b6001600160a01b038216610c9d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610486565b6001600160a01b03821660009081526020819052604090205481811015610d115760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610486565b6001600160a01b038316600081815260208181526040808320868603905560028054879003905551858152919291600080516020610fba83398151915291016108dd565b600060208083528351808285015260005b81811015610d8257858101830151858201604001528201610d66565b81811115610d94576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610dc157600080fd5b919050565b60008060408385031215610dd957600080fd5b610de283610daa565b946020939093013593505050565b600080600060608486031215610e0557600080fd5b610e0e84610daa565b9250610e1c60208501610daa565b9150604084013590509250925092565b600060208284031215610e3e57600080fd5b610e4782610daa565b9392505050565b600080600080600080600060e0888a031215610e6957600080fd5b610e7288610daa565b9650610e8060208901610daa565b95506040880135945060608801359350608088013560ff81168114610ea457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610ed457600080fd5b610edd83610daa565b9150610eeb60208401610daa565b90509250929050565b600181811c90821680610f0857607f821691505b602082108103610f2857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610f5757610f57610f2e565b500190565b60208082526024908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f42526040820152634944474560e01b606082015260800190565b600060018201610fb257610fb2610f2e565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400fa26469706673582212206aa726514b02f96d0faa290d2747748128c753b26d79c2146367e9390138677f64736f6c634300080f0033501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe27545983a2646970667358221220c9685580e8edc653df46174a4a1c4bbb3b8dffb7544d8889d56e6577d348318c64736f6c634300080f0033", + "bytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x01", - "0x0000000000000000000000000000000000000000000000000000000000000055": "0xc949254d682d8c9ad5682521675b8f43b102aec4", - "0x0000000000000000000000000000000000000000000000000000000000000087": "0x01", - "0x000000000000000000000000000000000000000000000000000000000000008b": "0xae4bb80be56b819606589de61d5ec3b522eeb032" + "0x0000000000000000000000000000000000000000000000000000000000000022": "0x0100", + "0x0000000000000000000000000000000000000000000000000000000000000026": "0xae4bb80be56b819606589de61d5ec3b522eeb032" }, "contractName": "PolygonZkEVMBridge" }, @@ -30,11 +29,48 @@ "balance": "0", "nonce": "1", "address": "0xae4bb80be56b819606589de61d5ec3b522eeb032", - "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b36600461014d565b60006020819052908152604090205481565b6100a061009b36600461014d565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b031633146101485760405162461bcd60e51b815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a75706461746545604482015273786974526f6f743a204f4e4c595f42524944474560601b606482015260840160405180910390fd5b600155565b60006020828403121561015f57600080fd5b503591905056fea264697066735822122055a91ce0b0e2097f6ede1464275887801f3e3847a103f41a42a2125acaba0be264736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000002": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" }, "contractName": "PolygonZkEVMGlobalExitRootL2" } + ], + "transactions": [ + { + "rawTx": "0xf902768080839896808080b90266608060405234801561001057600080fd5b5060405161024638038061024683398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6101b3806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f00330000000000000000000000009d98deabc42dd696deb9e40b4f1cab7ddbf559888203e8808062c7b6ed3f97f48cb0c909b6fc5fa0bda9ae0392c5e3c6abb883afff10d8843d354c515eb025b1ea82e17a389a23d5d4b0b6dbc45cbf215d181958094d03c4b11b", + "receipt": { + "status": 1, + "gasUsed": "0x029ed4", + "logs": [] + }, + "createAddress": "0xae4bb80be56b819606589de61d5ec3b522eeb032" + }, + { + "rawTx": "0xf947fe0180839896808080b947ee608060405234801561001057600080fd5b506147ce806100206000396000f3fe608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f00338203e88080777dd3dc8232ea55dbedf0681a6a9134de7200ab1334a6015345d9257ef62971780fe992e94f761de3335283ba6c1d9f3f512e05503d4526f62eb9644a1cf5681c", + "receipt": { + "status": 1, + "gasUsed": "0x3d3cde", + "logs": [] + }, + "createAddress": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" + }, + { + "rawTx": "0xf887028083989680949d98deabc42dd696deb9e40b4f1cab7ddbf5598880b864647c576c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ae4bb80be56b819606589de61d5ec3b522eeb03200000000000000000000000000000000000000000000000000000000000000008203e8808052465a317fd5c147ded90409a32915bbe579c557787787abbc17e67a47f773694f7fa1fd7b14ab8175e1725ec18cee985bcc262340ad5a215b097f2b3a880ee41b", + "receipt": { + "status": 1, + "gasUsed": "0x016aa5", + "logs": [ + [ + "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", + [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "0x0000000000000000000000000000000000000000000000000000000000000001" + ] + ] + }, + "createAddress": null + } ] } \ No newline at end of file diff --git a/config/environments/local/local.node.config.toml b/config/environments/local/local.node.config.toml index 84d3eacf27..64023283db 100644 --- a/config/environments/local/local.node.config.toml +++ b/config/environments/local/local.node.config.toml @@ -14,14 +14,16 @@ Port = "5432" EnableLog = false MaxConns = 200 -[PoolDB] -User = "pool_user" -Password = "pool_password" -Name = "pool_db" -Host = "zkevm-pool-db" -Port = "5432" -EnableLog = false -MaxConns = 200 +[Pool] +FreeClaimGasLimit = 1500000 + [Pool.DB] + User = "pool_user" + Password = "pool_password" + Name = "pool_db" + Host = "zkevm-pool-db" + Port = "5432" + EnableLog = false + MaxConns = 200 [Etherman] URL = "http://your.L1node.url" @@ -88,7 +90,7 @@ VerifyProofInterval = "30s" TxProfitabilityCheckerType = "acceptall" TxProfitabilityMinReward = "1.1" ProofStatePollingInterval = "5s" -SenderAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" +SenderAddress = "0x70997970c51812dc3a010c7d01b50e0d17dc79c8" [EthTxManager] PrivateKeys = [ diff --git a/config/environments/public/public.node.config.toml b/config/environments/public/public.node.config.toml index c9849a285b..a527819ff2 100644 --- a/config/environments/public/public.node.config.toml +++ b/config/environments/public/public.node.config.toml @@ -13,7 +13,7 @@ EnableLog = false MaxConns = 200 [Pool] -FreeClaimGasLimit = 150000 +FreeClaimGasLimit = 1500000 [Pool.DB] User = "pool_user" Password = "pool_password" diff --git a/etherman/etherman.go b/etherman/etherman.go index b99410aab6..267fdc657f 100644 --- a/etherman/etherman.go +++ b/etherman/etherman.go @@ -13,9 +13,9 @@ import ( "github.com/0xPolygonHermez/zkevm-node/etherman/etherscan" "github.com/0xPolygonHermez/zkevm-node/etherman/ethgasstation" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/globalexitrootmanager" "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/matic" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/proofofefficiency" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevm" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevmglobalexitroot" ethmanTypes "github.com/0xPolygonHermez/zkevm-node/etherman/types" "github.com/0xPolygonHermez/zkevm-node/log" "github.com/0xPolygonHermez/zkevm-node/state" @@ -105,8 +105,8 @@ type externalGasProviders struct { // Client is a simple implementation of EtherMan. type Client struct { EthClient ethereumClient - PoE *proofofefficiency.Proofofefficiency - GlobalExitRootManager *globalexitrootmanager.Globalexitrootmanager + PoE *polygonzkevm.Polygonzkevm + GlobalExitRootManager *polygonzkevmglobalexitroot.Polygonzkevmglobalexitroot Matic *matic.Matic SCAddresses []common.Address @@ -125,11 +125,11 @@ func NewClient(cfg Config) (*Client, error) { return nil, err } // Create smc clients - poe, err := proofofefficiency.NewProofofefficiency(cfg.PoEAddr, ethClient) + poe, err := polygonzkevm.NewPolygonzkevm(cfg.PoEAddr, ethClient) if err != nil { return nil, err } - globalExitRoot, err := globalexitrootmanager.NewGlobalexitrootmanager(cfg.GlobalExitRootManagerAddr, ethClient) + globalExitRoot, err := polygonzkevmglobalexitroot.NewPolygonzkevmglobalexitroot(cfg.GlobalExitRootManagerAddr, ethClient) if err != nil { return nil, err } @@ -347,13 +347,13 @@ func (etherMan *Client) BuildSequenceBatchesTxData(sender common.Address, sequen } func (etherMan *Client) sequenceBatches(opts bind.TransactOpts, sequences []ethmanTypes.Sequence) (*types.Transaction, error) { - var batches []proofofefficiency.ProofOfEfficiencyBatchData + var batches []polygonzkevm.PolygonZkEVMBatchData for _, seq := range sequences { batchL2Data, err := state.EncodeTransactions(seq.Txs) if err != nil { return nil, fmt.Errorf("failed to encode transactions, err: %v", err) } - batch := proofofefficiency.ProofOfEfficiencyBatchData{ + batch := polygonzkevm.PolygonZkEVMBatchData{ Transactions: batchL2Data, GlobalExitRoot: seq.GlobalExitRoot, Timestamp: uint64(seq.Timestamp), @@ -467,7 +467,7 @@ func (etherMan *Client) forcedBatchEvent(ctx context.Context, vLog types.Log, bl txData := tx.Data() // Extract coded txs. // Load contract ABI - abi, err := abi.JSON(strings.NewReader(proofofefficiency.ProofofefficiencyABI)) + abi, err := abi.JSON(strings.NewReader(polygonzkevm.PolygonzkevmABI)) if err != nil { return err } @@ -561,7 +561,7 @@ func (etherMan *Client) sequencedBatchesEvent(ctx context.Context, vLog types.Lo func decodeSequences(txData []byte, lastBatchNumber uint64, sequencer common.Address, txHash common.Hash, nonce uint64) ([]SequencedBatch, error) { // Extract coded txs. // Load contract ABI - abi, err := abi.JSON(strings.NewReader(proofofefficiency.ProofofefficiencyABI)) + abi, err := abi.JSON(strings.NewReader(polygonzkevm.PolygonzkevmABI)) if err != nil { return nil, err } @@ -577,7 +577,7 @@ func decodeSequences(txData []byte, lastBatchNumber uint64, sequencer common.Add if err != nil { return nil, err } - var sequences []proofofefficiency.ProofOfEfficiencyBatchData + var sequences []polygonzkevm.PolygonZkEVMBatchData bytedata, err := json.Marshal(data[0]) if err != nil { return nil, err @@ -591,11 +591,11 @@ func decodeSequences(txData []byte, lastBatchNumber uint64, sequencer common.Add for i, seq := range sequences { bn := lastBatchNumber - uint64(len(sequences)-(i+1)) sequencedBatches[i] = SequencedBatch{ - BatchNumber: bn, - Coinbase: sequencer, - TxHash: txHash, - Nonce: nonce, - ProofOfEfficiencyBatchData: seq, + BatchNumber: bn, + Coinbase: sequencer, + TxHash: txHash, + Nonce: nonce, + PolygonZkEVMBatchData: seq, } } @@ -686,7 +686,7 @@ func (etherMan *Client) forceSequencedBatchesEvent(ctx context.Context, vLog typ func decodeSequencedForceBatches(txData []byte, lastBatchNumber uint64, sequencer common.Address, txHash common.Hash, block *types.Block, nonce uint64) ([]SequencedForceBatch, error) { // Extract coded txs. // Load contract ABI - abi, err := abi.JSON(strings.NewReader(proofofefficiency.ProofofefficiencyABI)) + abi, err := abi.JSON(strings.NewReader(polygonzkevm.PolygonzkevmABI)) if err != nil { return nil, err } @@ -703,7 +703,7 @@ func decodeSequencedForceBatches(txData []byte, lastBatchNumber uint64, sequence return nil, err } - var forceBatches []proofofefficiency.ProofOfEfficiencyForcedBatchData + var forceBatches []polygonzkevm.PolygonZkEVMForcedBatchData bytedata, err := json.Marshal(data[0]) if err != nil { return nil, err @@ -717,12 +717,12 @@ func decodeSequencedForceBatches(txData []byte, lastBatchNumber uint64, sequence for i, force := range forceBatches { bn := lastBatchNumber - uint64(len(forceBatches)-(i+1)) sequencedForcedBatches[i] = SequencedForceBatch{ - BatchNumber: bn, - Coinbase: sequencer, - TxHash: txHash, - Timestamp: time.Unix(int64(block.Time()), 0), - Nonce: nonce, - ProofOfEfficiencyForcedBatchData: force, + BatchNumber: bn, + Coinbase: sequencer, + TxHash: txHash, + Timestamp: time.Unix(int64(block.Time()), 0), + Nonce: nonce, + PolygonZkEVMForcedBatchData: force, } } return sequencedForcedBatches, nil diff --git a/etherman/etherman_test.go b/etherman/etherman_test.go index 0e79daf417..56fefea596 100644 --- a/etherman/etherman_test.go +++ b/etherman/etherman_test.go @@ -8,8 +8,8 @@ import ( "testing" "time" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/bridge" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/proofofefficiency" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevm" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevmbridge" ethmanTypes "github.com/0xPolygonHermez/zkevm-node/etherman/types" "github.com/0xPolygonHermez/zkevm-node/log" "github.com/ethereum/go-ethereum" @@ -30,7 +30,7 @@ func init() { } // This function prepare the blockchain, the wallet with funds and deploy the smc -func newTestingEnv() (ethman *Client, ethBackend *backends.SimulatedBackend, auth *bind.TransactOpts, maticAddr common.Address, br *bridge.Bridge) { +func newTestingEnv() (ethman *Client, ethBackend *backends.SimulatedBackend, auth *bind.TransactOpts, maticAddr common.Address, br *polygonzkevmbridge.Polygonzkevmbridge) { privateKey, err := crypto.GenerateKey() if err != nil { log.Fatal(err) @@ -150,14 +150,14 @@ func TestSequencedBatchesEvent(t *testing.T) { currentBlockNumber := currentBlock.NumberU64() blocks, _, err := etherman.GetRollupInfoByBlockRange(ctx, initBlock.NumberU64(), ¤tBlockNumber) require.NoError(t, err) - var sequences []proofofefficiency.ProofOfEfficiencyBatchData - sequences = append(sequences, proofofefficiency.ProofOfEfficiencyBatchData{ + var sequences []polygonzkevm.PolygonZkEVMBatchData + sequences = append(sequences, polygonzkevm.PolygonZkEVMBatchData{ GlobalExitRoot: ger, Timestamp: currentBlock.Time(), MinForcedTimestamp: uint64(blocks[1].ForcedBatches[0].ForcedAt.Unix()), Transactions: common.Hex2Bytes(rawTxs), }) - sequences = append(sequences, proofofefficiency.ProofOfEfficiencyBatchData{ + sequences = append(sequences, polygonzkevm.PolygonZkEVMBatchData{ GlobalExitRoot: ger, Timestamp: currentBlock.Time() + 1, MinForcedTimestamp: 0, @@ -195,13 +195,13 @@ func TestVerifyBatchEvent(t *testing.T) { require.NoError(t, err) rawTxs := "f84901843b9aca00827b0c945fbdb2315678afecb367f032d93f642f64180aa380a46057361d00000000000000000000000000000000000000000000000000000000000000048203e9808073efe1fa2d3e27f26f32208550ea9b0274d49050b816cadab05a771f4275d0242fd5d92b3fb89575c070e6c930587c520ee65a3aa8cfe382fcad20421bf51d621c" - tx := proofofefficiency.ProofOfEfficiencyBatchData{ + tx := polygonzkevm.PolygonZkEVMBatchData{ GlobalExitRoot: common.Hash{}, Timestamp: initBlock.Time(), MinForcedTimestamp: 0, Transactions: common.Hex2Bytes(rawTxs), } - _, err = etherman.PoE.SequenceBatches(auth, []proofofefficiency.ProofOfEfficiencyBatchData{tx}) + _, err = etherman.PoE.SequenceBatches(auth, []polygonzkevm.PolygonZkEVMBatchData{tx}) require.NoError(t, err) // Mine the tx in a block @@ -264,12 +264,12 @@ func TestSequenceForceBatchesEvent(t *testing.T) { blocks, _, err := etherman.GetRollupInfoByBlockRange(ctx, initBlock.NumberU64(), &finalBlockNumber) require.NoError(t, err) - forceBatchData := proofofefficiency.ProofOfEfficiencyForcedBatchData{ + forceBatchData := polygonzkevm.PolygonZkEVMForcedBatchData{ Transactions: blocks[0].ForcedBatches[0].RawTxsData, GlobalExitRoot: blocks[0].ForcedBatches[0].GlobalExitRoot, MinForcedTimestamp: uint64(blocks[0].ForcedBatches[0].ForcedAt.Unix()), } - _, err = etherman.PoE.SequenceForceBatches(auth, []proofofefficiency.ProofOfEfficiencyForcedBatchData{forceBatchData}) + _, err = etherman.PoE.SequenceForceBatches(auth, []polygonzkevm.PolygonZkEVMForcedBatchData{forceBatchData}) require.NoError(t, err) ethBackend.Commit() diff --git a/etherman/simulated.go b/etherman/simulated.go index 5440b38a51..3381a28ecc 100644 --- a/etherman/simulated.go +++ b/etherman/simulated.go @@ -5,11 +5,11 @@ import ( "fmt" "math/big" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/bridge" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/globalexitrootmanager" "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/matic" "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/mockverifier" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/proofofefficiency" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevm" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevmbridge" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevmglobalexitroot" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" "github.com/ethereum/go-ethereum/common" @@ -19,7 +19,7 @@ import ( // NewSimulatedEtherman creates an etherman that uses a simulated blockchain. It's important to notice that the ChainID of the auth // must be 1337. The address that holds the auth will have an initial balance of 10 ETH -func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client, ethBackend *backends.SimulatedBackend, maticAddr common.Address, br *bridge.Bridge, err error) { +func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client, ethBackend *backends.SimulatedBackend, maticAddr common.Address, br *polygonzkevmbridge.Polygonzkevmbridge, err error) { if auth == nil { // read only client return &Client{}, nil, common.Address{}, nil, nil @@ -55,7 +55,7 @@ func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client const posPoE = 3 calculatedPoEAddr := crypto.CreateAddress(auth.From, nonce+posPoE) genesis := common.HexToHash("0xfd3434cd8f67e59d73488a2b8da242dd1f02849ea5dd99f0ca22c836c3d5b4a9") // Random value. Needs to be different to 0x0 - exitManagerAddr, _, globalExitRoot, err := globalexitrootmanager.DeployGlobalexitrootmanager(auth, client) + exitManagerAddr, _, globalExitRoot, err := polygonzkevmglobalexitroot.DeployPolygonzkevmglobalexitroot(auth, client) if err != nil { return nil, nil, common.Address{}, nil, err } @@ -63,11 +63,11 @@ func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client if err != nil { return nil, nil, common.Address{}, nil, err } - bridgeAddr, _, br, err := bridge.DeployBridge(auth, client) + bridgeAddr, _, br, err := polygonzkevmbridge.DeployPolygonzkevmbridge(auth, client) if err != nil { return nil, nil, common.Address{}, nil, err } - poeAddr, _, poe, err := proofofefficiency.DeployProofofefficiency(auth, client) + poeAddr, _, poe, err := polygonzkevm.DeployPolygonzkevm(auth, client) if err != nil { return nil, nil, common.Address{}, nil, err } @@ -76,7 +76,7 @@ func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client return nil, nil, common.Address{}, nil, err } - poeParams := proofofefficiency.ProofOfEfficiencyInitializePackedParameters{ + poeParams := polygonzkevm.PolygonZkEVMInitializePackedParameters{ Admin: auth.From, ChainID: 1000, //nolint:gomnd TrustedSequencer: auth.From, diff --git a/etherman/smartcontracts/abi/proofofefficiency.abi b/etherman/smartcontracts/abi/polygonzkevm.abi similarity index 93% rename from etherman/smartcontracts/abi/proofofefficiency.abi rename to etherman/smartcontracts/abi/polygonzkevm.abi index 96845ed4a2..4a838bda67 100644 --- a/etherman/smartcontracts/abi/proofofefficiency.abi +++ b/etherman/smartcontracts/abi/polygonzkevm.abi @@ -195,6 +195,19 @@ "name": "SetForceBatchAllowed", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "newMultiplierBatchFee", + "type": "uint16" + } + ], + "name": "SetMultiplierBatchFee", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -260,6 +273,19 @@ "name": "SetTrustedSequencerURL", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "newVeryBatchTimeTarget", + "type": "uint64" + } + ], + "name": "SetVeryBatchTimeTarget", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -338,7 +364,7 @@ }, { "inputs": [], - "name": "MAX_TRANSACTIONS_BYTE_LENGTH", + "name": "MAX_BATCH_MULTIPLIER", "outputs": [ { "internalType": "uint256", @@ -351,20 +377,7 @@ }, { "inputs": [], - "name": "MAX_VERIFY_BATCHES", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MULTIPLIER_BATCH_FEE", + "name": "MAX_TRANSACTIONS_BYTE_LENGTH", "outputs": [ { "internalType": "uint256", @@ -377,7 +390,7 @@ }, { "inputs": [], - "name": "VERIFY_BATCH_TIME_TARGET", + "name": "MAX_VERIFY_BATCHES", "outputs": [ { "internalType": "uint64", @@ -451,7 +464,7 @@ "name": "bridgeAddress", "outputs": [ { - "internalType": "contract IBridge", + "internalType": "contract IPolygonZkEVMBridge", "name": "", "type": "address" } @@ -625,7 +638,7 @@ "name": "globalExitRootManager", "outputs": [ { - "internalType": "contract IGlobalExitRootManager", + "internalType": "contract IPolygonZkEVMGlobalExitRoot", "name": "", "type": "address" } @@ -636,7 +649,7 @@ { "inputs": [ { - "internalType": "contract IGlobalExitRootManager", + "internalType": "contract IPolygonZkEVMGlobalExitRoot", "name": "_globalExitRootManager", "type": "address" }, @@ -651,7 +664,7 @@ "type": "address" }, { - "internalType": "contract IBridge", + "internalType": "contract IPolygonZkEVMBridge", "name": "_bridgeAddress", "type": "address" }, @@ -693,7 +706,7 @@ "type": "uint64" } ], - "internalType": "struct ProofOfEfficiency.InitializePackedParameters", + "internalType": "struct PolygonZkEVM.InitializePackedParameters", "name": "initializePackedParameters", "type": "tuple" }, @@ -854,6 +867,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "multiplierBatchFee", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "networkName", @@ -1078,7 +1104,7 @@ "type": "uint64" } ], - "internalType": "struct ProofOfEfficiency.BatchData[]", + "internalType": "struct PolygonZkEVM.BatchData[]", "name": "batches", "type": "tuple[]" } @@ -1108,7 +1134,7 @@ "type": "uint64" } ], - "internalType": "struct ProofOfEfficiency.ForcedBatchData[]", + "internalType": "struct PolygonZkEVM.ForcedBatchData[]", "name": "batches", "type": "tuple[]" } @@ -1173,6 +1199,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newMultiplierBatchFee", + "type": "uint16" + } + ], + "name": "setMultiplierBatchFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1238,6 +1277,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "newVeryBatchTimeTarget", + "type": "uint64" + } + ], + "name": "setVeryBatchTimeTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1398,5 +1450,18 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [], + "name": "veryBatchTimeTarget", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" } ] \ No newline at end of file diff --git a/etherman/smartcontracts/abi/bridge.abi b/etherman/smartcontracts/abi/polygonzkevmbridge.abi similarity index 91% rename from etherman/smartcontracts/abi/bridge.abi rename to etherman/smartcontracts/abi/polygonzkevmbridge.abi index ef4fb9d7c8..d64ab6c566 100644 --- a/etherman/smartcontracts/abi/bridge.abi +++ b/etherman/smartcontracts/abi/polygonzkevmbridge.abi @@ -141,25 +141,6 @@ "name": "NewWrappedToken", "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" - }, { "inputs": [], "name": "LEAF_TYPE_ASSET", @@ -508,7 +489,7 @@ "name": "globalExitRootManager", "outputs": [ { - "internalType": "contract IGlobalExitRootManager", + "internalType": "contract IPolygonZkEVMGlobalExitRoot", "name": "", "type": "address" } @@ -524,13 +505,13 @@ "type": "uint32" }, { - "internalType": "contract IGlobalExitRootManager", + "internalType": "contract IPolygonZkEVMGlobalExitRoot", "name": "_globalExitRootManager", "type": "address" }, { "internalType": "address", - "name": "_poeAddress", + "name": "_polygonZkEVMaddress", "type": "address" } ], @@ -586,20 +567,7 @@ }, { "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "poeAddress", + "name": "polygonZkEVMaddress", "outputs": [ { "internalType": "address", @@ -649,13 +617,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -675,19 +636,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/etherman/smartcontracts/abi/globalexitrootmanager.abi b/etherman/smartcontracts/abi/polygonzkevmglobalexitroot.abi similarity index 100% rename from etherman/smartcontracts/abi/globalexitrootmanager.abi rename to etherman/smartcontracts/abi/polygonzkevmglobalexitroot.abi diff --git a/etherman/smartcontracts/bin/bridge.bin b/etherman/smartcontracts/bin/bridge.bin deleted file mode 100644 index 6263b06bd1..0000000000 --- a/etherman/smartcontracts/bin/bridge.bin +++ /dev/null @@ -1 +0,0 @@ -608060405234801561001057600080fd5b50615114806100206000396000f3fe608060405260043610620001cf5760003560e01c806381b1c17411620000ff578063d02103ca1162000095578063ed6be5c9116200006c578063ed6be5c91462000569578063ee25560b1462000580578063f2fde38b14620005b1578063ff634ed714620005d657600080fd5b8063d02103ca1462000518578063d96a15f7146200053a578063dbc16976146200055157600080fd5b80639e34070f11620000d65780639e34070f146200046f578063a08e8a081462000494578063aaa13cc214620004be578063bab161bf14620004e357600080fd5b806381b1c17414620003f35780638da5cb5b146200042d5780638f611519146200044d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200036c578063647c576c1462000391578063715018a614620003b65780637b6323c114620003ce57600080fd5b80633ae05047146200030a5780633da8168214620003225780633e197043146200034757600080fd5b806322e95f2c11620001aa57806322e95f2c14620002365780632dfdf0b51462000274578063318aee3d146200029b57600080fd5b80630871e97114620001d457806315064c9614620001ed5780632072f6c5146200021e575b600080fd5b620001eb620001e536600462002d0f565b620005ed565b005b348015620001fa57600080fd5b50602254620002099060ff1681565b60405190151581526020015b60405180910390f35b3480156200022b57600080fd5b50620001eb62000aec565b3480156200024357600080fd5b506200025b6200025536600462002d9c565b62000b8e565b6040516001600160a01b03909116815260200162000215565b3480156200028157600080fd5b506200028c60215481565b60405190815260200162000215565b348015620002a857600080fd5b50620002e5620002ba36600462002dd8565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b0390911660208301520162000215565b3480156200031757600080fd5b506200028c62000bf9565b3480156200032f57600080fd5b50620002096200034136600462002ec0565b62000cec565b3480156200035457600080fd5b506200028c6200036636600462002f3e565b62000dec565b3480156200037957600080fd5b50620001eb6200038b3660046200304f565b62000e96565b3480156200039e57600080fd5b50620001eb620003b036600462003136565b620010de565b348015620003c357600080fd5b50620001eb6200125e565b348015620003db57600080fd5b50620001eb620003ed3660046200304f565b62001274565b3480156200040057600080fd5b506200025b6200041236600462003186565b6089602052600090815260409020546001600160a01b031681565b3480156200043a57600080fd5b506055546001600160a01b03166200025b565b3480156200045a57600080fd5b50608c546200025b906001600160a01b031681565b3480156200047c57600080fd5b50620002096200048e36600462003186565b620017c2565b348015620004a157600080fd5b50620004ab600081565b60405160ff909116815260200162000215565b348015620004cb57600080fd5b506200025b620004dd366004620031a0565b62001807565b348015620004f057600080fd5b50608754620005029063ffffffff1681565b60405163ffffffff909116815260200162000215565b3480156200052557600080fd5b50608b546200025b906001600160a01b031681565b620001eb6200054b36600462003254565b6200195b565b3480156200055e57600080fd5b50620001eb62001b48565b3480156200057657600080fd5b5062000502600081565b3480156200058d57600080fd5b506200028c6200059f36600462003186565b60886020526000908152604090205481565b348015620005be57600080fd5b50620001eb620005d036600462002dd8565b62001be8565b348015620005e357600080fd5b50620004ab600181565b60225460ff1615620006775760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620006e75760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e546044820152692fa122afa4aa29a2a62360b11b60648201526084016200066e565b60008060606001600160a01b0389166200077c57853414620007725760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200066e565b6000915062000a06565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000863576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200082a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008509190620032cb565b5060208101518151909450925062000a04565b84156200087857620008788a88888862001c7e565b6200088f6001600160a01b038b1633308a620021e8565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620008e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200091091908101906200336e565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200094f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200097991908101906200336e565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009de9190620033a7565b604051602001620009f293929190620033f5565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000a4898979695949392919062003432565b60405180910390a162000a7362000a6d600084868c8c8c888051906020012062000dec565b6200226e565b608b546001600160a01b03166333d6247d62000a8e62000bf9565b6040518263ffffffff1660e01b815260040162000aad91815260200190565b600060405180830381600087803b15801562000ac857600080fd5b505af115801562000add573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000b825760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201526a18de4818dbdb9d1c9858dd60aa1b608482015260a4016200066e565b62000b8c620023d2565b565b6040805160e084901b6001600160e01b031916602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000ce3578260011660010362000c64576001816020811062000c305762000c306200349e565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000c91565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000c9e600284620034e0565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000cda90620034f7565b91505062000c04565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000ddf578160011660010362000d695786818151811062000d275762000d276200349e565b60200260200101518360405160200162000d4b929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000dbb565b8287828151811062000d7f5762000d7f6200349e565b602002602001015160405160200162000da2929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000dc8600283620034e0565b91508062000dd681620034f7565b91505062000cfc565b5050909114949350505050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201526001600160e01b031960e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000f1c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b62000f328a8a8a8a8a8a8a8a8a8a600162002490565b62000f438963ffffffff1662002759565b6000836001600160a01b03168387898560405160240162000f679392919062003513565b60408051601f198184030181529181526020820180516001600160e01b03167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000fb791906200354c565b60006040518083038185875af1925050503d806000811462000ff6576040519150601f19603f3d011682016040523d82523d6000602084013e62000ffb565b606091505b5050905080620010735760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200066e565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff1615808015620010ff5750600054600160ff909116105b806200111b5750303b1580156200111b575060005460ff166001145b6200118f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200066e565b6000805460ff191660011790558015620011b3576000805461ff0019166101001790555b6087805463ffffffff861663ffffffff19909116179055608b80546001600160a01b0380861673ffffffffffffffffffffffffffffffffffffffff1992831617909255608c805492851692909116919091179055620012116200279b565b801562001258576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6200126862002825565b62000b8c600062002881565b60225460ff1615620012fa5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b620013108a8a8a8a8a8a8a8a8a8a600062002490565b620013218963ffffffff1662002759565b6001600160a01b0385166200142057604080516000808252602082019092526001600160a01b0385169084906040516200135c91906200354c565b60006040518083038185875af1925050503d80600081146200139b576040519150601f19603f3d011682016040523d82523d6000602084013e620013a0565b606091505b5050905080620014195760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200066e565b5062001758565b60875463ffffffff9081169087160362001450576200144a6001600160a01b0386168484620028e0565b62001758565b6040516001600160e01b031960e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620016dd57600080600085806020019051810190620014d891906200356a565b925092509250600085848484604051620014f29062002c78565b6200150093929190620033f5565b8190604051809103906000f590508015801562001521573d6000803e3d6000fd5b506040516340c10f1960e01b81526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001576573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200159c9190620032cb565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620016cb9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001755565b6040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af11580156200172d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017539190620032cb565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600080620017d361010084620034e0565b90506000620017e561010085620035e0565b60009283526088602052604090922054600190921b9182169091149392505050565b6040516001600160e01b031960e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620018729062002c78565b601f1982820381018352601f9091011660408190526200189f908d908d908d908d908d9060200162003620565b60408051601f1981840301815290829052620018bf929160200162003661565b604051602081830303815290604052805190602001206040516020016200193594939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620019e15760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b60875463ffffffff9081169084160362001a515760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e546044820152692fa122afa4aa29a2a62360b11b60648201526084016200066e565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001a9e9260019263ffffffff9092169133918991899134918a919062003432565b60405180910390a162001ad562000a6d6001608760009054906101000a900463ffffffff1633878734888051906020012062000dec565b608b546001600160a01b03166333d6247d62001af062000bf9565b6040518263ffffffff1660e01b815260040162001b0f91815260200190565b600060405180830381600087803b15801562001b2a57600080fd5b505af115801562001b3f573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001bde5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201526a18de4818dbdb9d1c9858dd60aa1b608482015260a4016200066e565b62000b8c6200292b565b62001bf262002825565b6001600160a01b03811662001c705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200066e565b62001c7b8162002881565b50565b600062001cc183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620029da92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000006001600160e01b031982160162001f7e57600080808080808062001d0c896004818d62003694565b81019062001d1b9190620036c0565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462001db25760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200066e565b6001600160a01b038616301462001e1a5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f42456044820152645f5448495360d81b60648201526084016200066e565b8a851462001e915760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200066e565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b03167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001f2a91906200354c565b6000604051808303816000865af19150503d806000811462001f69576040519150601f19603f3d011682016040523d82523d6000602084013e62001f6e565b606091505b50505050505050505050620021e1565b6001600160e01b031981166323f2ebc360e21b1462001fe05760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200066e565b60008080808080808062001ff88a6004818e62003694565b8101906200200791906200371b565b97509750975097509750975097509750336001600160a01b0316886001600160a01b031614620020a05760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200066e565b6001600160a01b0387163014620021085760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f42456044820152645f5448495360d81b60648201526084016200066e565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f16916200219191906200354c565b6000604051808303816000865af19150503d8060008114620021d0576040519150601f19603f3d011682016040523d82523d6000602084013e620021d5565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620012589085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152620029e1565b8060016200227f60206002620038a4565b6200228b9190620038b2565b60215410620023035760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200066e565b600160216000828254620023189190620038cc565b909155505060215460005b6020811015620023c25781600116600103620023585782600182602081106200235057620023506200349e565b015550505050565b600181602081106200236e576200236e6200349e565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620023ab9190620034e0565b915080620023b981620034f7565b91505062002323565b50620023cd620038e7565b505050565b60225460ff1615620024585760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b620024a18a63ffffffff16620017c2565b15620025155760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200066e565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620025a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025c89190620038fd565b905080600003620026425760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200066e565b60875463ffffffff878116911614620026c45760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200066e565b60875460009063ffffffff16620026dd575088620026e0565b50895b6200270b620026fc848b8b8b8b8b8b8051906020012062000dec565b8e8e63ffffffff168462000cec565b62000add5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200066e565b60006200276961010083620034e0565b905060006200277b61010084620035e0565b6000928352608860205260409092208054600190931b9092179091555050565b600054610100900460ff166200281a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200066e565b62000b8c3362002881565b6055546001600160a01b0316331462000b8c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200066e565b605580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620023cd9084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002236565b60225460ff16620029a55760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200066e565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002a38826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002acd9092919063ffffffff16565b805190915015620023cd578080602001905181019062002a599190620032cb565b620023cd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200066e565b606062002ade848460008562002ae8565b90505b9392505050565b60608247101562002b625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016200066e565b6001600160a01b0385163b62002bbb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200066e565b600080866001600160a01b0316858760405162002bd991906200354c565b60006040518083038185875af1925050503d806000811462002c18576040519150601f19603f3d011682016040523d82523d6000602084013e62002c1d565b606091505b509150915062002c2f82828662002c3a565b979650505050505050565b6060831562002c4b57508162002ae1565b82511562002c5c5782518084602001fd5b8160405162461bcd60e51b81526004016200066e919062003917565b6117b2806200392d83390190565b6001600160a01b038116811462001c7b57600080fd5b803562002ca98162002c86565b919050565b803563ffffffff8116811462002ca957600080fd5b60008083601f84011262002cd657600080fd5b50813567ffffffffffffffff81111562002cef57600080fd5b60208301915083602082850101111562002d0857600080fd5b9250929050565b60008060008060008060a0878903121562002d2957600080fd5b863562002d368162002c86565b955062002d466020880162002cae565b9450604087013562002d588162002c86565b935060608701359250608087013567ffffffffffffffff81111562002d7c57600080fd5b62002d8a89828a0162002cc3565b979a9699509497509295939492505050565b6000806040838503121562002db057600080fd5b62002dbb8362002cae565b9150602083013562002dcd8162002c86565b809150509250929050565b60006020828403121562002deb57600080fd5b813562002ae18162002c86565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002e3a5762002e3a62002df8565b604052919050565b600082601f83011262002e5457600080fd5b8135602067ffffffffffffffff82111562002e735762002e7362002df8565b8160051b62002e8482820162002e0e565b928352848101820192828101908785111562002e9f57600080fd5b83870192505b8483101562002c2f5782358252918301919083019062002ea5565b6000806000806080858703121562002ed757600080fd5b84359350602085013567ffffffffffffffff8082111562002ef757600080fd5b62002f058883890162002e42565b945060408701359150808216821462002f1d57600080fd5b509396929550929360600135925050565b60ff8116811462001c7b57600080fd5b600080600080600080600060e0888a03121562002f5a57600080fd5b873562002f678162002f2e565b965062002f776020890162002cae565b9550604088013562002f898162002c86565b945062002f996060890162002cae565b9350608088013562002fab8162002c86565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562002fe55762002fe562002df8565b50601f01601f191660200190565b600082601f8301126200300557600080fd5b81356200301c620030168262002fc8565b62002e0e565b8181528460208386010111156200303257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200307057600080fd5b8a3567ffffffffffffffff808211156200308957600080fd5b620030978e838f0162002e42565b9b50620030a760208e0162002cae565b9a5060408d0135995060608d01359850620030c560808e0162002cae565b9750620030d560a08e0162002c9c565b9650620030e560c08e0162002cae565b9550620030f560e08e0162002c9c565b94506101008d013593506101208d01359150808211156200311557600080fd5b50620031248d828e0162002ff3565b9150509295989b9194979a5092959850565b6000806000606084860312156200314c57600080fd5b620031578462002cae565b92506020840135620031698162002c86565b915060408401356200317b8162002c86565b809150509250925092565b6000602082840312156200319957600080fd5b5035919050565b600080600080600080600060a0888a031215620031bc57600080fd5b620031c78862002cae565b96506020880135620031d98162002c86565b9550604088013567ffffffffffffffff80821115620031f757600080fd5b620032058b838c0162002cc3565b909750955060608a01359150808211156200321f57600080fd5b506200322e8a828b0162002cc3565b9094509250506080880135620032448162002f2e565b8091505092959891949750929550565b6000806000606084860312156200326a57600080fd5b620032758462002cae565b92506020840135620032878162002c86565b9150604084013567ffffffffffffffff811115620032a457600080fd5b620032b28682870162002ff3565b9150509250925092565b801515811462001c7b57600080fd5b600060208284031215620032de57600080fd5b815162002ae181620032bc565b60005b8381101562003308578181015183820152602001620032ee565b83811115620012585750506000910152565b600082601f8301126200332c57600080fd5b81516200333d620030168262002fc8565b8181528460208386010111156200335357600080fd5b62003366826020830160208701620032eb565b949350505050565b6000602082840312156200338157600080fd5b815167ffffffffffffffff8111156200339957600080fd5b62003366848285016200331a565b600060208284031215620033ba57600080fd5b815162002ae18162002f2e565b60008151808452620033e1816020860160208601620032eb565b601f01601f19169290920160200192915050565b6060815260006200340a6060830186620033c7565b82810360208401526200341e8186620033c7565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c08501526200348582850187620033c7565b925080851660e085015250509998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082620034f257620034f2620034b4565b500490565b6000600182016200350c576200350c620034ca565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620035436060830184620033c7565b95945050505050565b6000825162003560818460208701620032eb565b9190910192915050565b6000806000606084860312156200358057600080fd5b835167ffffffffffffffff808211156200359957600080fd5b620035a7878388016200331a565b94506020860151915080821115620035be57600080fd5b50620035cd868287016200331a565b92505060408401516200317b8162002f2e565b600082620035f257620035f2620034b4565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062003636606083018789620035f7565b82810360208401526200364b818688620035f7565b91505060ff831660408301529695505050505050565b6000835162003675818460208801620032eb565b8351908301906200368b818360208801620032eb565b01949350505050565b60008085851115620036a557600080fd5b83861115620036b357600080fd5b5050820193919092039150565b600080600080600080600060e0888a031215620036dc57600080fd5b8735620036e98162002c86565b96506020880135620036fb8162002c86565b95506040880135945060608801359350608088013562002fab8162002f2e565b600080600080600080600080610100898b0312156200373957600080fd5b8835620037468162002c86565b97506020890135620037588162002c86565b9650604089013595506060890135945060808901356200377881620032bc565b935060a08901356200378a8162002f2e565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620037e8578160001904821115620037cc57620037cc620034ca565b80851615620037da57918102915b93841c9390800290620037ac565b509250929050565b600082620038015750600162000bf3565b81620038105750600062000bf3565b8160018114620038295760028114620038345762003854565b600191505062000bf3565b60ff841115620038485762003848620034ca565b50506001821b62000bf3565b5060208310610133831016604e8410600b841016171562003879575081810a62000bf3565b620038858383620037a7565b80600019048211156200389c576200389c620034ca565b029392505050565b600062002ae18383620037f0565b600082821015620038c757620038c7620034ca565b500390565b60008219821115620038e257620038e2620034ca565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200391057600080fd5b5051919050565b60208152600062002ae16020830184620033c756fe60c06040523480156200001157600080fd5b50604051620017b2380380620017b28339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516112f8620004ba60003960006104e001526000818161034801526104aa01526112f86000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461036a578063dd62ed3e1461037f578063ffa1ad74146103b857600080fd5b8063a457c2d71461031d578063a9059cbb14610330578063cd0d00961461034357600080fd5b806395d89b41116100bd57806395d89b41146102d75780639dc29fac146102df578063a3c573eb146102f257600080fd5b806370a082311461028e5780637ecebe00146102b757600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103d8565b604051610191919061108b565b60405180910390f35b6101ad6101a83660046110fc565b61046a565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611126565b610482565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104a6565b6101ad6102763660046110fc565b610502565b6101ad6102893660046110fc565b610541565b6101c161029c366004611162565b6001600160a01b031660009081526020819052604090205490565b6101c16102c5366004611162565b60066020526000908152604090205481565b6101846105c2565b6101ad6102ed3660046110fc565b6105d1565b600554610305906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ad61032b3660046110fc565b610644565b6101ad61033e3660046110fc565b6106ee565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61037d610378366004611184565b6106fc565b005b6101c161038d3660046111f7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103e79061122a565b80601f01602080910402602001604051908101604052809291908181526020018280546104139061122a565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b600033610478818585610981565b5060019392505050565b600033610490858285610ada565b61049b858585610b6c565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104dd576104d846610d83565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610478908290869061053c90879061127a565b610981565b6005546000906001600160a01b031633146105af5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f42526044820152634944474560e01b60648201526084015b60405180910390fd5b6105b98383610e2f565b50600192915050565b6060600480546103e79061122a565b6005546000906001600160a01b0316331461063a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f42526044820152634944474560e01b60648201526084016105a6565b6105b98383610f0e565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156106e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105a6565b61049b8286868403610981565b600033610478818585610b6c565b834211156107715760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866107be83611292565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061081c6104a6565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156108c2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906108f85750896001600160a01b0316816001600160a01b0316145b61096a5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105a6565b6109758a8a8a610981565b50505050505050505050565b6001600160a01b0383166109fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038216610a785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b665781811015610b595760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a6565b610b668484848403610981565b50505050565b6001600160a01b038316610be85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038216610c645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b03831660009081526020819052604090205481811015610cf35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d2a90849061127a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7691815260200190565b60405180910390a3610b66565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610dae6103d8565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610e855760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105a6565b8060026000828254610e97919061127a565b90915550506001600160a01b03821660009081526020819052604081208054839290610ec490849061127a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f8a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038216600090815260208190526040902054818110156110195760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110489084906112ab565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610acd565b600060208083528351808285015260005b818110156110b85785810183015185820160400152820161109c565b818111156110ca576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146110f757600080fd5b919050565b6000806040838503121561110f57600080fd5b611118836110e0565b946020939093013593505050565b60008060006060848603121561113b57600080fd5b611144846110e0565b9250611152602085016110e0565b9150604084013590509250925092565b60006020828403121561117457600080fd5b61117d826110e0565b9392505050565b600080600080600080600060e0888a03121561119f57600080fd5b6111a8886110e0565b96506111b6602089016110e0565b95506040880135945060608801359350608088013560ff811681146111da57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561120a57600080fd5b611213836110e0565b9150611221602084016110e0565b90509250929050565b600181811c9082168061123e57607f821691505b60208210810361125e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561128d5761128d611264565b500190565b6000600182016112a4576112a4611264565b5060010190565b6000828210156112bd576112bd611264565b50039056fea2646970667358221220e92796a67a51f68b4e38bef4ca270c512835dbbbc94c239fbee097e6ae35764364736f6c634300080f0033a26469706673582212203f16f0e9de29ee165e359296bc9d758bfeae7c0bda29ccb9d1feb0c48db2d21464736f6c634300080f0033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/globalexitrootmanager.bin b/etherman/smartcontracts/bin/globalexitrootmanager.bin deleted file mode 100644 index 5898052d07..0000000000 --- a/etherman/smartcontracts/bin/globalexitrootmanager.bin +++ /dev/null @@ -1 +0,0 @@ -608060405234801561001057600080fd5b506104cd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461015e57600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b736600461042f565b60036020526000908152604090205481565b61009660025481565b6100e56100e036600461042f565b610171565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e366004610464565b6102cd565b600554610146906001600160a01b031681565b6040516001600160a01b0390911681526020016100a0565b600454610146906001600160a01b031681565b6005546001600160a01b031633148061019457506004546001600160a01b031633145b61020b5760405162461bcd60e51b815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b6005546001600160a01b031633036102235760018190555b6004546001600160a01b0316330361023b5760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036102c957600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156102ed5750600054600160ff909116105b806103075750303b158015610307575060005460ff166001145b6103795760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610202565b6000805460ff19166001179055801561039c576000805461ff0019166101001790555b600580546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561042a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561044157600080fd5b5035919050565b80356001600160a01b038116811461045f57600080fd5b919050565b6000806040838503121561047757600080fd5b61048083610448565b915061048e60208401610448565b9050925092905056fea264697066735822122017f0e386b65d4b488e1ae82e0a2d700352d5ea3125ecc66d095224034edccd2164736f6c634300080f0033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/polygonzkevm.bin b/etherman/smartcontracts/bin/polygonzkevm.bin new file mode 100644 index 0000000000..0ba644f52f --- /dev/null +++ b/etherman/smartcontracts/bin/polygonzkevm.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50615f3b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c80638da5cb5b116101f4578063cfa8ed471161011a578063e7a7ed02116100ad578063f14916d61161007c578063f14916d6146108f2578063f2fde38b14610905578063f851a44014610918578063f8b823e41461092b57600080fd5b8063e7a7ed021461089f578063e8bf92ed146108b9578063eaeb077b146108cc578063edc41121146108df57600080fd5b8063d939b315116100e9578063d939b31514610861578063dbc169761461087b578063e11f3f1814610883578063e217cfd61461089657600080fd5b8063cfa8ed471461080d578063d02103ca14610827578063d8d1091b1461083a578063d8f54db01461084d57600080fd5b8063ab9fc5ef11610192578063b6b0b09711610161578063b6b0b097146107c5578063c0ed84e0146107df578063c89e42df146107e7578063cf136306146107fa57600080fd5b8063ab9fc5ef14610713578063adc879e91461071d578063afd23cbe14610737578063b4d63f581461076557600080fd5b80639eb831b9116101ce5780639eb831b9146106d85780639f0d039d146106e0578063a3c573eb146106e8578063aa58bad6146106fb57600080fd5b80638da5cb5b146106ac57806399f5634e146106bd5780639c9f3dfe146106c557600080fd5b80634a910e6a116102d9578063715018a611610277578063837a473811610246578063837a473814610607578063841b24d7146106755780638b48931e1461068f5780638c4a0af71461069957600080fd5b8063715018a6146105c65780637215541a146105ce57806375c508b3146105e15780637fcb3653146105f457600080fd5b806360943d6a116102b357806360943d6a1461056d5780636b8616ce146105805780636ff512cc146105a0578063704b6c02146105b357600080fd5b80634a910e6a146105325780635392c5e014610545578063542028d51461056557600080fd5b8063383b3be811610351578063456052671161032057806345605267146104d8578063458c0477146104f25780634834a343146105055780634a1a89a71461051857600080fd5b8063383b3be814610485578063394218e9146104985780633c158267146104ab578063423fa856146104be57600080fd5b806319d8ac611161038d57806319d8ac6114610404578063220d78991461042f57806329878983146104425780632d0889d31461046d57600080fd5b8063107bf28c146103b457806315064c96146103d25780631816b7e5146103ef575b600080fd5b6103bc610934565b6040516103c99190615364565b60405180910390f35b6065546103df9060ff1681565b60405190151581526020016103c9565b6104026103fd366004615377565b6109c2565b005b606854610417906001600160401b031681565b6040516001600160401b0390911681526020016103c9565b6103bc61043d3660046153b7565b610b43565b606a54610455906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b610477620493e081565b6040519081526020016103c9565b6103df610493366004615404565b610ce9565b6104026104a6366004615404565b610d30565b6104026104b9366004615541565b610f61565b60685461041790600160401b90046001600160401b031681565b60685461041790600160801b90046001600160401b031681565b607254610417906001600160401b031681565b61040261051336600461567f565b611840565b60725461041790600160401b90046001600160401b031681565b610402610540366004615404565b611c16565b610477610553366004615404565b606d6020526000908152604090205481565b6103bc611cd5565b61040261057b366004615721565b611ce2565b61047761058e366004615404565b60666020526000908152604090205481565b6104026105ae3660046157f8565b61209b565b6104026105c13660046157f8565b612170565b610402612224565b6104026105dc366004615404565b612238565b6104026105ef366004615815565b612492565b606954610417906001600160401b031681565b61064a6106153660046158b3565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103c9565b60725461041790600160c01b90046001600160401b031681565b61041762093a8081565b6104026106a73660046158da565b612582565b6033546001600160a01b0316610455565b610477612635565b6104026106d3366004615404565b612731565b610477600c81565b607454610477565b607054610455906001600160a01b031681565b6065546104179061010090046001600160401b031681565b6104176206978081565b606c5461041790600160a81b90046001600160401b031681565b606554610752906901000000000000000000900461ffff1681565b60405161ffff90911681526020016103c9565b6107a0610773366004615404565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103c9565b60655461045590600160581b90046001600160a01b031681565b61041761292f565b6104026107f53660046158f7565b61297c565b610402610808366004615404565b612a1e565b60695461045590600160401b90046001600160a01b031681565b606c54610455906001600160a01b031681565b610402610848366004615933565b612adb565b606c546103df90600160a01b900460ff1681565b60725461041790600160801b90046001600160401b031681565b610402613165565b610402610891366004615815565b6132b3565b6104176103e881565b60685461041790600160c01b90046001600160401b031681565b606b54610455906001600160a01b031681565b6104026108da366004615a25565b61347e565b6104026108ed36600461567f565b6138bc565b6104026109003660046157f8565b613a3b565b6104026109133660046157f8565b613aef565b607354610455906001600160a01b031681565b61047760745481565b606f805461094190615a69565b80601f016020809104026020016040519081016040528092919081815260200182805461096d90615a69565b80156109ba5780601f1061098f576101008083540402835291602001916109ba565b820191906000526020600020905b81548152906001019060200180831161099d57829003601f168201915b505050505081565b6073546001600160a01b03163314610a2d5760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b60648201526084015b60405180910390fd5b6103e88161ffff1610158015610a4857506104008161ffff16105b610ae05760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f7260648201527f726563742072616e676500000000000000000000000000000000000000000000608482015260a401610a24565b606580546affff0000000000000000001916690100000000000000000061ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610b7557508115155b610be9576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f742065786973746064820152608401610a24565b80610c5e576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f742065786973746064820152608401610a24565b606c54604080516bffffffffffffffffffffffff193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610d1f92600160801b90920481169116615ab9565b6001600160401b0316111592915050565b6073546001600160a01b03163314610d965760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b62093a806001600160401b0382161115610e3e5760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201527f676174696f6e2074696d656f7574000000000000000000000000000000000000608482015260a401610a24565b60655460ff16610efa576072546001600160401b03600160c01b909104811690821610610efa5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201527f6f77657200000000000000000000000000000000000000000000000000000000608482015260a401610a24565b6072805477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610b38565b60655460ff1615610fe55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b606954600160401b90046001600160a01b0316331461106c5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e6365720000000000006064820152608401610a24565b8051806110e15760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e636520312062617463680000006064820152608401610a24565b6103e8811061115a576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e7920626174636865736064820152608401610a24565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156116535760008782815181106111ad576111ad615ae4565b60200260200101519050600081606001516001600160401b0316111561138457836111d781615afa565b94505060008160000151805190602001208260200151836060015160405160200161122293929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146112c85760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204660448201527f6f7263656420626174636865732064617461206d757374206d617463680000006064820152608401610a24565b81606001516001600160401b031682604001516001600160401b0316101561137e5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204660448201527f6f7263656420626174636865732074696d657374616d70206d7573742062652060648201527f626967676572206f7220657175616c207468616e206d696e0000000000000000608482015260a401610a24565b50611512565b602081015115806114265750606c5460208201516040517f257b36320000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163257b3632916113e09160040190815260200190565b6020604051808303816000875af11580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190615b20565b15155b6114985760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d7573742065786973740000000000006064820152608401610a24565b805151620493e0116115125760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610a24565b856001600160401b031681604001516001600160401b03161015801561154557504281604001516001600160401b031611155b6115b75760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e67650000006064820152608401610a24565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c01604051602081830303815290604052805190602001209250848061163590615afa565b9550508060400151955050808061164b90615b39565b915050611191565b506068546001600160401b03600160c01b909104811690831611156116e05760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204660448201527f6f7263652062617463686573206f766572666c6f7700000000000000000000006064820152608401610a24565b60685460009061170090600160801b90046001600160401b031684615b52565b611713906001600160401b031687615b7a565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166fffffffffffffffffffffffffffffffff199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b928716929092029190911790556074549091506117f1903390309084906117d69190615b91565b606554600160581b90046001600160a01b0316929190613b7c565b6117f9613c2d565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156118c45760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b6072546001600160401b0387811660009081526067602052604090206001015442926118fb92600160c01b90910481169116615ab9565b6001600160401b0316111561199e5760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f74206578706960648201527f7265640000000000000000000000000000000000000000000000000000000000608482015260a401610a24565b6103e86119ab8888615b52565b6001600160401b031610611a275760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e792062617463686573000000006064820152608401610a24565b611a378888888888888888613cd1565b611a408661424e565b607254600160801b90046001600160401b0316600003611b11576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615611aae57607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b50505050611bcb565b611b19613c2d565b607280546001600160401b0316906000611b3283615afa565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026fffffffffffffffffffffffffffffffff199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b03163314611cc957611c3181610ce9565b611cc95760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f74207265616460648201527f7920746f20626520636f6e736f6c696461746564000000000000000000000000608482015260a401610a24565b611cd281614440565b50565b606e805461094190615a69565b600054610100900460ff1615808015611d025750600054600160ff909116105b80611d1c5750303b158015611d1c575060005460ff166001145b611d8e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a24565b6000805460ff191660011790558015611db1576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c811691909117909255606580547fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b8c851602179055606b805482168a841617905560708054909116918816919091179055611e2e60208601866157f8565b607380546001600160a01b0319166001600160a01b0392909216919091179055611e5e60608601604087016157f8565b606980546001600160a01b0392909216600160401b027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055611eae60c0860160a087016157f8565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611f0b60e0860160c08701615404565b607280546001600160401b0392909216600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055611f536040860160208701615404565b606c80546001600160401b0392909216600160a81b027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff909216919091179055611fa36080860160608701615404565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055611fdf60a08601608087016158da565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e6120078482615bf6565b50606f6120148382615bf6565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea00000000000007080017905561204a61462a565b8015612090576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146121015760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff16600160401b6001600160a01b038416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610b38565b6073546001600160a01b031633146121d65760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b607380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190602001610b38565b61222c6146b0565b612236600061470a565b565b6033546001600160a01b0316331461248a57600061225461292f565b9050806001600160401b0316826001600160401b0316116122dd5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e63795360448201527f746174653a20426174636820616c7265616479207665726966696564000000006064820152608401610a24565b6068546001600160401b03600160401b90910481169083161180159061231f57506001600160401b038083166000908152606760205260409020600101541615155b6123b75760405162461bcd60e51b815260206004820152605060248201527f506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e63795360448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201527f20656e64206f662073657175656e636500000000000000000000000000000000608482015260a401610a24565b6001600160401b0380831660009081526067602052604090206001015442916123e59162093a809116615ab9565b6001600160401b031611156124885760405162461bcd60e51b815260206004820152604d60248201527f506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e63795360448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201527f73206e6f74206578706972656400000000000000000000000000000000000000608482015260a401610a24565b505b611cd261475c565b60655460ff16156125165760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b6125278989898989898989896147cc565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a161209061475c565b6073546001600160a01b031633146125e85760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610b3890831515815260200190565b6065546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000918291600160581b9091046001600160a01b0316906370a0823190602401602060405180830381865afa1580156126a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c59190615b20565b905060006126d161292f565b6068546001600160401b03600160401b820481169161270191600160801b8204811691600160c01b900416615b52565b61270b9190615ab9565b6127159190615b52565b6001600160401b0316905061272a8183615ccb565b9250505090565b6073546001600160a01b031633146127975760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b62093a806001600160401b038216111561283f5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f60648201527f6e2074696d656f75740000000000000000000000000000000000000000000000608482015260a401610a24565b60655460ff166128d4576072546001600160401b03600160801b9091048116908216106128d45760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f776572006064820152608401610a24565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610b38565b6072546000906001600160401b03161561296c57506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b031633146129e25760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606e6129ee8282615bf6565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610b389190615364565b6073546001600160a01b03163314612a845760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610b38565b60655460ff1615612b5f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b606c54600160a01b900460ff161515600114612bef5760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560448201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606482015262626c6560e81b608482015260a401610a24565b805180612c645760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a204d75737420666f726365206174206c656173742031206261746368006064820152608401610a24565b6103e88110612d015760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201527f6865730000000000000000000000000000000000000000000000000000000000608482015260a401610a24565b6068546001600160401b03600160c01b8204811691612d29918491600160801b900416615cdf565b1115612d9d5760405162461bcd60e51b815260206004820152603760248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a20466f72636520626174636820696e76616c69640000000000000000006064820152608401610a24565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b8481101561305e576000868281518110612dea57612dea615ae4565b602002602001015190508380612dff90615afa565b825180516020918201208185015160408087015181519485019390935283015260c01b6001600160c01b03191660608201529095506000915060680160408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612f075760405162461bcd60e51b815260206004820152604260248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610a24565b612f12600188615b7a565b8303612fcf5742620697808360400151612f2c9190615ab9565b6001600160401b03161115612fcf5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f60648201527f757420706572696f640000000000000000000000000000000000000000000000608482015260a401610a24565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c01604051602081830303815290604052805190602001209350858061304690615afa565b9650505050808061305690615b39565b915050612dce565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166fffffffffffffffffffffffffffffffff199092169190911792861685029290921790915585547fffffffffffffffff00000000000000000000000000000000ffffffffffffffff1694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166131dd5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610a24565b6073546001600160a01b031633146132435760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561329357600080fd5b505af11580156132a7573d6000803e3d6000fd5b50505050612236614ed6565b606a546001600160a01b031633146133335760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160448201527f746f723a204f6e6c7920747275737465642061676772656761746f72000000006064820152608401610a24565b6133448989898989898989896147cc565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d60205260409020859055607254161561339857607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b50506072805477ffffffffffffffffffffffffffffffffffffffffffffffff167a093a80000000000000000000000000000000000000000000000000179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff16156135025760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b606c54600160a01b900460ff1615156001146135925760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560448201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606482015262626c6560e81b608482015260a401610a24565b600061359d60745490565b9050818111156136155760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e60448201527f6f756768206d61746963000000000000000000000000000000000000000000006064820152608401610a24565b620493e083511061368e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e736160448201527f6374696f6e73206279746573206f766572666c6f7700000000000000000000006064820152608401610a24565b6065546136ad90600160581b90046001600160a01b0316333084613b7c565b606c54604080517f3ed691ef00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa158015613710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137349190615b20565b60688054919250600160c01b9091046001600160401b031690601861375883615afa565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050838051906020012081426040516020016137b793929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b03166000908152606690935291205532330361385b57606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a26138b6565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9318233876040516138ad93929190615cf7565b60405180910390a25b50505050565b606a546001600160a01b0316331461393c5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160448201527f746f723a204f6e6c7920747275737465642061676772656761746f72000000006064820152608401610a24565b61394c8888888888888888613cd1565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156139a057607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156139e657600080fd5b505af11580156139fa573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611c04565b6073546001600160a01b03163314613aa15760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90602001610b38565b613af76146b0565b6001600160a01b038116613b735760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a24565b611cd28161470a565b6040516001600160a01b03808516602483015283166044820152606481018290526138b69085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614f83565b6072546001600160401b03600160401b820481169116111561223657607254600090613c6a90600160401b90046001600160401b03166001615ab9565b9050613c7581610ce9565b15611cd257607254600090600290613c979084906001600160401b0316615b52565b613ca19190615d28565b613cab9083615ab9565b9050613cb681610ce9565b15613cc857613cc481614440565b5050565b613cc482614440565b600080613cdc61292f565b90506001600160401b038a1615613e68576072546001600160401b03908116908b161115613d985760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527f75616c207468616e206c61737450656e64696e67537461746500000000000000608482015260a401610a24565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613e625760405162461bcd60e51b815260206004820152604d60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e60448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201527f6720737461746520626174636800000000000000000000000000000000000000608482015260a401610a24565b50613fcb565b6001600160401b0389166000908152606d6020526040902054915081613f1d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f74206560648201527f7869737400000000000000000000000000000000000000000000000000000000608482015260a401610a24565b806001600160401b0316896001600160401b03161115613fcb5760405162461bcd60e51b815260206004820152605e60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e60448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a401610a24565b806001600160401b0316886001600160401b0316116140785760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e2060648201527f63757272656e744c617374566572696669656442617463680000000000000000608482015260a401610a24565b60006140878a8a8a868b610b43565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140bc9190615d4e565b602060405180830381855afa1580156140d9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906140fc9190615b20565b6141069190615d6a565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d9161414a918b918b918b9190600401615d7e565b602060405180830381865afa158015614167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418b9190615df8565b6141fd5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201527f76616c69642070726f6f660000000000000000000000000000000000000000006064820152608401610a24565b6142403361420b858d615b52565b6001600160401b031661421c612635565b6142269190615b91565b606554600160581b90046001600160a01b0316919061506d565b505050505050505050505050565b600061425861292f565b9050816000806142688484615b52565b6001600160401b031690505b836001600160401b0316836001600160401b03161461431a576001600160401b038084166000908152606760205260409020606554600182015491926101009091048116916142c4911642615b7a565b11156142ff5760018101546142e990600160401b90046001600160401b031685615b52565b6142fc906001600160401b031684615cdf565b92505b60010154600160401b90046001600160401b03169250614274565b60006143268383615b7a565b9050828110156143a657600061433c8285615b7a565b9050600c811161434c578061434f565b600c5b905061435c816003615b91565b61436790600a615ef9565b6065546143869083906901000000000000000000900461ffff16615ef9565b6074546143939190615b91565b61439d9190615ccb565b60745550614438565b60006143b28483615b7a565b9050600c81116143c257806143c5565b600c5b905060006143d4826003615b91565b6143df90600a615ef9565b6065546143fe9084906901000000000000000000900461ffff16615ef9565b60745461440b9190615b91565b6144159190615ccb565b9050806074546074546144289190615b91565b6144329190615ccb565b60745550505b505050505050565b6001600160401b0381161580159061446d57506072546001600160401b03600160401b9091048116908216115b801561448857506072546001600160401b0390811690821611155b6144fa5760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c6964006064820152608401610a24565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d9094529382902092909255607280546fffffffffffffffff000000000000000019169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b1580156145bc57600080fd5b505af11580156145d0573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e846002015460405161461d91815260200190565b60405180910390a3505050565b600054610100900460ff166146a75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a24565b6122363361470a565b6033546001600160a01b031633146122365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a24565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156147ac57600080fd5b505af11580156147c0573d6000803e3d6000fd5b505050506122366150b6565b60006001600160401b038a161561497c576072546001600160401b03908116908b1611156148ae5760405162461bcd60e51b815260206004820152606560248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e6760848201527f537461746500000000000000000000000000000000000000000000000000000060a482015260c401610a24565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146149765760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d61746360648201527f68207468652070656e64696e6720737461746520626174636800000000000000608482015260a401610a24565b50614ae6565b506001600160401b0387166000908152606d602052604090205480614a2f5760405162461bcd60e51b815260206004820152605060248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201527f7420646f6573206e6f7420657869737400000000000000000000000000000000608482015260a401610a24565b6069546001600160401b039081169089161115614ae65760405162461bcd60e51b815260206004820152606360248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c401610a24565b6072546001600160401b03908116908a1611801590614b165750896001600160401b0316896001600160401b0316115b8015614b3757506072546001600160401b03600160401b9091048116908a16115b614bcf5760405162461bcd60e51b815260206004820152604860248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d206960648201527f6e636f7272656374000000000000000000000000000000000000000000000000608482015260a401610a24565b6001600160401b03898116600090815260716020526040902054600160401b9004811690881614614c9a5760405162461bcd60e51b815260206004820152606360248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c401610a24565b6000614ca9898989858a610b43565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051614cde9190615d4e565b602060405180830381855afa158015614cfb573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614d1e9190615b20565b614d289190615d6a565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614d6c918a918a918a9190600401615d7e565b602060405180830381865afa158015614d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dad9190615df8565b614e1f5760405162461bcd60e51b815260206004820152603760248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20496e76616c69642070726f6f660000000000000000006064820152608401610a24565b6001600160401b038b166000908152607160205260409020600201548790036142405760405162461bcd60e51b815260206004820152605b60248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a401610a24565b60655460ff16614f4e5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610a24565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000614fd8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151729092919063ffffffff16565b8051909150156150685780806020019051810190614ff69190615df8565b6150685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a24565b505050565b6040516001600160a01b0383166024820152604481018290526150689084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613bc9565b60655460ff161561513a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6060615181848460008561518b565b90505b9392505050565b6060824710156152035760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a24565b6001600160a01b0385163b61525a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a24565b600080866001600160a01b031685876040516152769190615d4e565b60006040518083038185875af1925050503d80600081146152b3576040519150601f19603f3d011682016040523d82523d6000602084013e6152b8565b606091505b50915091506152c88282866152d3565b979650505050505050565b606083156152e2575081615184565b8251156152f25782518084602001fd5b8160405162461bcd60e51b8152600401610a249190615364565b60005b8381101561532757818101518382015260200161530f565b838111156138b65750506000910152565b6000815180845261535081602086016020860161530c565b601f01601f19169290920160200192915050565b6020815260006151846020830184615338565b60006020828403121561538957600080fd5b813561ffff8116811461518457600080fd5b80356001600160401b03811681146153b257600080fd5b919050565b600080600080600060a086880312156153cf57600080fd5b6153d88661539b565b94506153e66020870161539b565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561541657600080fd5b6151848261539b565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156154575761545761541f565b60405290565b604051606081016001600160401b03811182821017156154575761545761541f565b604051601f8201601f191681016001600160401b03811182821017156154a7576154a761541f565b604052919050565b60006001600160401b038211156154c8576154c861541f565b5060051b60200190565b600082601f8301126154e357600080fd5b81356001600160401b038111156154fc576154fc61541f565b61550f601f8201601f191660200161547f565b81815284602083860101111561552457600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561555457600080fd5b82356001600160401b038082111561556b57600080fd5b818501915085601f83011261557f57600080fd5b813561559261558d826154af565b61547f565b81815260059190911b830184019084810190888311156155b157600080fd5b8585015b8381101561564a578035858111156155cd5760008081fd5b86016080818c03601f19018113156155e55760008081fd5b6155ed615435565b89830135888111156155ff5760008081fd5b61560d8e8c838701016154d2565b8252506040808401358b830152606061562781860161539b565b8284015261563684860161539b565b9083015250855250509186019186016155b5565b5098975050505050505050565b806040810183101561566857600080fd5b92915050565b806080810183101561566857600080fd5b6000806000806000806000806101a0898b03121561569c57600080fd5b6156a58961539b565b97506156b360208a0161539b565b96506156c160408a0161539b565b955060608901359450608089013593506156de8a60a08b01615657565b92506156ed8a60e08b0161566e565b91506156fd8a6101608b01615657565b90509295985092959890939650565b6001600160a01b0381168114611cd257600080fd5b600080600080600080600080888a036101c081121561573f57600080fd5b893561574a8161570c565b985060208a013561575a8161570c565b975060408a013561576a8161570c565b965060608a013561577a8161570c565b955060e0607f198201121561578e57600080fd5b5060808901935061016089013592506101808901356001600160401b03808211156157b857600080fd5b6157c48c838d016154d2565b93506101a08b01359150808211156157db57600080fd5b506157e88b828c016154d2565b9150509295985092959890939650565b60006020828403121561580a57600080fd5b81356151848161570c565b60008060008060008060008060006101c08a8c03121561583457600080fd5b61583d8a61539b565b985061584b60208b0161539b565b975061585960408b0161539b565b965061586760608b0161539b565b955060808a0135945060a08a013593506158848b60c08c01615657565b92506158948b6101008c0161566e565b91506158a48b6101808c01615657565b90509295985092959850929598565b6000602082840312156158c557600080fd5b5035919050565b8015158114611cd257600080fd5b6000602082840312156158ec57600080fd5b8135615184816158cc565b60006020828403121561590957600080fd5b81356001600160401b0381111561591f57600080fd5b61592b848285016154d2565b949350505050565b6000602080838503121561594657600080fd5b82356001600160401b038082111561595d57600080fd5b818501915085601f83011261597157600080fd5b813561597f61558d826154af565b81815260059190911b8301840190848101908883111561599e57600080fd5b8585015b8381101561564a578035858111156159ba5760008081fd5b86016060818c03601f19018113156159d25760008081fd5b6159da61545d565b89830135888111156159ec5760008081fd5b6159fa8e8c838701016154d2565b8252506040808401358b830152615a1283850161539b565b90820152855250509186019186016159a2565b60008060408385031215615a3857600080fd5b82356001600160401b03811115615a4e57600080fd5b615a5a858286016154d2565b95602094909401359450505050565b600181811c90821680615a7d57607f821691505b602082108103615a9d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115615adb57615adb615aa3565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103615b1657615b16615aa3565b6001019392505050565b600060208284031215615b3257600080fd5b5051919050565b600060018201615b4b57615b4b615aa3565b5060010190565b60006001600160401b0383811690831681811015615b7257615b72615aa3565b039392505050565b600082821015615b8c57615b8c615aa3565b500390565b6000816000190483118215151615615bab57615bab615aa3565b500290565b601f82111561506857600081815260208120601f850160051c81016020861015615bd75750805b601f850160051c820191505b8181101561443857828155600101615be3565b81516001600160401b03811115615c0f57615c0f61541f565b615c2381615c1d8454615a69565b84615bb0565b602080601f831160018114615c585760008415615c405750858301515b600019600386901b1c1916600185901b178555614438565b600085815260208120601f198616915b82811015615c8757888601518255948401946001909101908401615c68565b5085821015615ca55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b600082615cda57615cda615cb5565b500490565b60008219821115615cf257615cf2615aa3565b500190565b8381526001600160a01b0383166020820152606060408201526000615d1f6060830184615338565b95945050505050565b60006001600160401b0380841680615d4257615d42615cb5565b92169190910492915050565b60008251615d6081846020870161530c565b9190910192915050565b600082615d7957615d79615cb5565b500690565b61012081016040808784376000838201818152879190815b6002811015615db657848483379084018281529284019290600101615d96565b5050828760c0870137610100850181815286935091505b6001811015615dec578251825260209283019290910190600101615dcd565b50505095945050505050565b600060208284031215615e0a57600080fd5b8151615184816158cc565b600181815b80851115615e50578160001904821115615e3657615e36615aa3565b80851615615e4357918102915b93841c9390800290615e1a565b509250929050565b600082615e6757506001615668565b81615e7457506000615668565b8160018114615e8a5760028114615e9457615eb0565b6001915050615668565b60ff841115615ea557615ea5615aa3565b50506001821b615668565b5060208310610133831016604e8410600b8410161715615ed3575081810a615668565b615edd8383615e15565b8060001904821115615ef157615ef1615aa3565b029392505050565b60006151848383615e5856fea2646970667358221220ea509bc505efc7dc646bd307099d94fdc965a048e39f3a02723bea443cbced3b64736f6c634300080f0033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/polygonzkevmbridge.bin b/etherman/smartcontracts/bin/polygonzkevmbridge.bin new file mode 100644 index 0000000000..f8848682d7 --- /dev/null +++ b/etherman/smartcontracts/bin/polygonzkevmbridge.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50614f9c806100206000396000f3fe608060405260043610620001ab5760003560e01c80637b6323c111620000e7578063d02103ca1162000089578063ed6be5c91162000060578063ed6be5c91462000512578063ee25560b1462000529578063ff634ed7146200055a57600080fd5b8063d02103ca14620004c1578063d96a15f714620004e3578063dbc1697614620004fa57600080fd5b8063a08e8a0811620000be578063a08e8a081462000438578063aaa13cc21462000462578063bab161bf146200048757600080fd5b80637b6323c114620003b457806381b1c17414620003d95780639e34070f146200041357600080fd5b806334ac9cf211620001515780633e19704311620001285780633e197043146200034557806346385549146200036a578063647c576c146200038f57600080fd5b806334ac9cf214620002e65780633ae0504714620003085780633da81682146200032057600080fd5b806322e95f2c116200018657806322e95f2c14620002125780632dfdf0b51462000250578063318aee3d146200027757600080fd5b80630871e97114620001b057806315064c9614620001c95780632072f6c514620001fa575b600080fd5b620001c7620001c136600462002b6e565b62000571565b005b348015620001d657600080fd5b50602254620001e59060ff1681565b60405190151581526020015b60405180910390f35b3480156200020757600080fd5b50620001c762000a9e565b3480156200021f57600080fd5b50620002376200023136600462002bfb565b62000b2c565b6040516001600160a01b039091168152602001620001f1565b3480156200025d57600080fd5b506200026860215481565b604051908152602001620001f1565b3480156200028457600080fd5b50620002c16200029636600462002c37565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f1565b348015620002f357600080fd5b5060275462000237906001600160a01b031681565b3480156200031557600080fd5b506200026862000ba8565b3480156200032d57600080fd5b50620001e56200033f36600462002d1f565b62000c9b565b3480156200035257600080fd5b50620002686200036436600462002d9d565b62000d9b565b3480156200037757600080fd5b50620001c76200038936600462002eae565b62000e45565b3480156200039c57600080fd5b50620001c7620003ae36600462002f95565b6200108e565b348015620003c157600080fd5b50620001c7620003d336600462002eae565b62001214565b348015620003e657600080fd5b5062000237620003f836600462002fe5565b6024602052600090815260409020546001600160a01b031681565b3480156200042057600080fd5b50620001e56200043236600462002fe5565b62001741565b3480156200044557600080fd5b506200044f600081565b60405160ff9091168152602001620001f1565b3480156200046f57600080fd5b50620002376200048136600462002fff565b62001786565b3480156200049457600080fd5b50602254620004ab90610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f1565b348015620004ce57600080fd5b5060265462000237906001600160a01b031681565b620001c7620004f4366004620030b3565b620018da565b3480156200050757600080fd5b50620001c762001ae6565b3480156200051f57600080fd5b50620004ab600081565b3480156200053657600080fd5b50620002686200054836600462002fe5565b60236020526000908152604090205481565b3480156200056757600080fd5b506200044f600181565b60225460ff1615620005fb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4015b60405180910390fd5b60225463ffffffff610100909104811690861603620006835760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620005f2565b60008060606001600160a01b0389166200073f57853414620007355760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e7660648201527f616c756500000000000000000000000000000000000000000000000000000000608482015260a401620005f2565b60009150620009b8565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000815576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac90604401600060405180830381600087803b158015620007e857600080fd5b505af1158015620007fd573d6000803e3d6000fd5b505050508060200151935080600001519250620009b6565b84156200082a576200082a8a88888862001b72565b620008416001600160a01b038b1633308a62002132565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000898573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008c291908101906200319e565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000901573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200092b91908101906200319e565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200096a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009909190620031d7565b604051602001620009a49392919062003225565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b87602154604051620009fa98979695949392919062003262565b60405180910390a162000a2562000a1f600084868c8c8c888051906020012062000d9b565b620021b8565b6026546001600160a01b03166333d6247d62000a4062000ba8565b6040518263ffffffff1660e01b815260040162000a5f91815260200190565b600060405180830381600087803b15801562000a7a57600080fd5b505af115801562000a8f573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b0316331462000b205760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620005f2565b62000b2a6200231c565b565b600060246000848460405160200162000b7092919060e09290921b6001600160e01b031916825260601b6bffffffffffffffffffffffff1916600482015260180190565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000c92578260011660010362000c13576001816020811062000bdf5762000bdf620032ce565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000c40565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000c4d60028462003310565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000c899062003327565b91505062000bb3565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000d8e578160011660010362000d185786818151811062000cd65762000cd6620032ce565b60200260200101518360405160200162000cfa929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000d6a565b8287828151811062000d2e5762000d2e620032ce565b602002602001015160405160200162000d51929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000d7760028362003310565b91508062000d858162003327565b91505062000cab565b5050909114949350505050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201526001600160e01b031960e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000ecb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b62000ee18a8a8a8a8a8a8a8a8a8a6001620023da565b62000ef28963ffffffff16620026fa565b6000836001600160a01b03168387898560405160240162000f169392919062003343565b60408051601f198184030181529181526020820180516001600160e01b03167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000f6691906200337c565b60006040518083038185875af1925050503d806000811462000fa5576040519150601f19603f3d011682016040523d82523d6000602084013e62000faa565b606091505b5050905080620010235760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201527f3a204d657373616765206661696c6564000000000000000000000000000000006064820152608401620005f2565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff1615808015620010af5750600054600160ff909116105b80620010cb5750303b158015620010cb575060005460ff166001145b6200113f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620005f2565b6000805460ff19166001179055801562001163576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255602780549285169290911691909117905580156200120e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff16156200129a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b620012b08a8a8a8a8a8a8a8a8a8a6000620023da565b620012c18963ffffffff16620026fa565b6001600160a01b038516620013c057604080516000808252602082019092526001600160a01b038516908490604051620012fc91906200337c565b60006040518083038185875af1925050503d80600081146200133b576040519150601f19603f3d011682016040523d82523d6000602084013e62001340565b606091505b5050905080620013b95760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a2060448201527f4574686572207472616e73666572206661696c656400000000000000000000006064820152608401620005f2565b50620016d7565b60225463ffffffff610100909104811690871603620013f557620013ef6001600160a01b03861684846200273c565b620016d7565b6040516001600160e01b031960e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b0316806200166f576000806000858060200190518101906200147d91906200339a565b925092509250600085848484604051620014979062002ad4565b620014a59392919062003225565b8190604051809103906000f5905080158015620014c6573d6000803e3d6000fd5b506040516340c10f1960e01b81526001600160a01b038b81166004830152602482018b9052919250908216906340c10f1990604401600060405180830381600087803b1580156200151657600080fd5b505af11580156200152b573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c836040516200165d9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a150505050620016d4565b6040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f1990604401600060405180830381600087803b158015620016ba57600080fd5b505af1158015620016cf573d6000803e3d6000fd5b505050505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600080620017526101008462003310565b90506000620017646101008562003410565b60009283526023602052604090922054600190921b9182169091149392505050565b6040516001600160e01b031960e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620017f19062002ad4565b601f1982820381018352601f9091011660408190526200181e908d908d908d908d908d9060200162003450565b60408051601f19818403018152908290526200183e929160200162003491565b60405160208183030381529060405280519060200120604051602001620018b494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620019605760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b60225463ffffffff610100909104811690841603620019e85760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620005f2565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff16338686348760215460405162001a3c98979695949392919062003262565b60405180910390a162001a7362000a1f6001602260019054906101000a900463ffffffff1633878734888051906020012062000d9b565b6026546001600160a01b03166333d6247d62001a8e62000ba8565b6040518263ffffffff1660e01b815260040162001aad91815260200190565b600060405180830381600087803b15801562001ac857600080fd5b505af115801562001add573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b0316331462001b685760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620005f2565b62000b2a62002787565b600062001bb583838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200283692505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000006001600160e01b031982160162001e8a57600080808080808062001c00896004818d620034c4565b81019062001c0f9190620034f0565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462001ca65760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d6974206f776e6572206d757374206265207468652073656e646572000000006064820152608401620005f2565b6001600160a01b038616301462001d265760405162461bcd60e51b815260206004820152603360248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2053706560448201527f6e646572206d75737420626520277468697327000000000000000000000000006064820152608401620005f2565b8a851462001d9d5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d697420616d6f756e7420646f6573206e6f74206d61746368000000000000006064820152608401620005f2565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b03167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001e3691906200337c565b6000604051808303816000865af19150503d806000811462001e75576040519150601f19603f3d011682016040523d82523d6000602084013e62001e7a565b606091505b505050505050505050506200212b565b6001600160e01b031981166323f2ebc360e21b1462001f125760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201527f2076616c69642063616c6c0000000000000000000000000000000000000000006064820152608401620005f2565b60008080808080808062001f2a8a6004818e620034c4565b81019062001f3991906200355a565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001fd25760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d6974206f776e6572206d757374206265207468652073656e646572000000006064820152608401620005f2565b6001600160a01b0387163014620020525760405162461bcd60e51b815260206004820152603360248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2053706560448201527f6e646572206d75737420626520277468697327000000000000000000000000006064820152608401620005f2565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f1691620020db91906200337c565b6000604051808303816000865af19150503d80600081146200211a576040519150601f19603f3d011682016040523d82523d6000602084013e6200211f565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200120e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200283d565b806001620021c960206002620036e3565b620021d59190620036f1565b602154106200224d5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c6560448201527f20747265652066756c6c000000000000000000000000000000000000000000006064820152608401620005f2565b6001602160008282546200226291906200370b565b909155505060215460005b60208110156200230c5781600116600103620022a25782600182602081106200229a576200229a620032ce565b015550505050565b60018160208110620022b857620022b8620032ce565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620022f5919062003310565b915080620023038162003327565b9150506200226d565b506200231762003726565b505050565b60225460ff1615620023a25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b620023eb8a63ffffffff1662001741565b15620024605760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20416c726561647920636c61696d6564000000000000000000000000000000006064820152608401620005f2565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620024ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200251391906200373c565b9050806000036200258d5760405162461bcd60e51b815260206004820152603760248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20476c6f62616c45786974526f6f7420696e76616c69640000000000000000006064820152608401620005f2565b60225463ffffffff87811661010090920416146200263a5760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d6160648201527f7463680000000000000000000000000000000000000000000000000000000000608482015260a401620005f2565b602254600090610100900463ffffffff16620026585750886200265b565b50895b6200268662002677848b8b8b8b8b8b8051906020012062000d9b565b8e8e63ffffffff168462000c9b565b62000a8f5760405162461bcd60e51b815260206004820152603260248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20496e76616c696420736d742070726f6f6600000000000000000000000000006064820152608401620005f2565b60006200270a6101008362003310565b905060006200271c6101008462003410565b6000928352602360205260409092208054600190931b9092179091555050565b6040516001600160a01b038316602482015260448101829052620023179084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002180565b60225460ff16620028015760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620005f2565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002894826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620029299092919063ffffffff16565b805190915015620023175780806020019051810190620028b5919062003756565b620023175760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620005f2565b60606200293a848460008562002944565b90505b9392505050565b606082471015620029be5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620005f2565b6001600160a01b0385163b62002a175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620005f2565b600080866001600160a01b0316858760405162002a3591906200337c565b60006040518083038185875af1925050503d806000811462002a74576040519150601f19603f3d011682016040523d82523d6000602084013e62002a79565b606091505b509150915062002a8b82828662002a96565b979650505050505050565b6060831562002aa75750816200293d565b82511562002ab85782518084602001fd5b8160405162461bcd60e51b8152600401620005f2919062003776565b6117db806200378c83390190565b6001600160a01b038116811462002af857600080fd5b50565b803562002b088162002ae2565b919050565b803563ffffffff8116811462002b0857600080fd5b60008083601f84011262002b3557600080fd5b50813567ffffffffffffffff81111562002b4e57600080fd5b60208301915083602082850101111562002b6757600080fd5b9250929050565b60008060008060008060a0878903121562002b8857600080fd5b863562002b958162002ae2565b955062002ba56020880162002b0d565b9450604087013562002bb78162002ae2565b935060608701359250608087013567ffffffffffffffff81111562002bdb57600080fd5b62002be989828a0162002b22565b979a9699509497509295939492505050565b6000806040838503121562002c0f57600080fd5b62002c1a8362002b0d565b9150602083013562002c2c8162002ae2565b809150509250929050565b60006020828403121562002c4a57600080fd5b81356200293d8162002ae2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002c995762002c9962002c57565b604052919050565b600082601f83011262002cb357600080fd5b8135602067ffffffffffffffff82111562002cd25762002cd262002c57565b8160051b62002ce382820162002c6d565b928352848101820192828101908785111562002cfe57600080fd5b83870192505b8483101562002a8b5782358252918301919083019062002d04565b6000806000806080858703121562002d3657600080fd5b84359350602085013567ffffffffffffffff8082111562002d5657600080fd5b62002d648883890162002ca1565b945060408701359150808216821462002d7c57600080fd5b509396929550929360600135925050565b60ff8116811462002af857600080fd5b600080600080600080600060e0888a03121562002db957600080fd5b873562002dc68162002d8d565b965062002dd66020890162002b0d565b9550604088013562002de88162002ae2565b945062002df86060890162002b0d565b9350608088013562002e0a8162002ae2565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562002e445762002e4462002c57565b50601f01601f191660200190565b600082601f83011262002e6457600080fd5b813562002e7b62002e758262002e27565b62002c6d565b81815284602083860101111562002e9157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002ecf57600080fd5b8a3567ffffffffffffffff8082111562002ee857600080fd5b62002ef68e838f0162002ca1565b9b5062002f0660208e0162002b0d565b9a5060408d0135995060608d0135985062002f2460808e0162002b0d565b975062002f3460a08e0162002afb565b965062002f4460c08e0162002b0d565b955062002f5460e08e0162002afb565b94506101008d013593506101208d013591508082111562002f7457600080fd5b5062002f838d828e0162002e52565b9150509295989b9194979a5092959850565b60008060006060848603121562002fab57600080fd5b62002fb68462002b0d565b9250602084013562002fc88162002ae2565b9150604084013562002fda8162002ae2565b809150509250925092565b60006020828403121562002ff857600080fd5b5035919050565b600080600080600080600060a0888a0312156200301b57600080fd5b620030268862002b0d565b96506020880135620030388162002ae2565b9550604088013567ffffffffffffffff808211156200305657600080fd5b620030648b838c0162002b22565b909750955060608a01359150808211156200307e57600080fd5b506200308d8a828b0162002b22565b9094509250506080880135620030a38162002d8d565b8091505092959891949750929550565b600080600060608486031215620030c957600080fd5b620030d48462002b0d565b92506020840135620030e68162002ae2565b9150604084013567ffffffffffffffff8111156200310357600080fd5b620031118682870162002e52565b9150509250925092565b60005b83811015620031385781810151838201526020016200311e565b838111156200120e5750506000910152565b600082601f8301126200315c57600080fd5b81516200316d62002e758262002e27565b8181528460208386010111156200318357600080fd5b620031968260208301602087016200311b565b949350505050565b600060208284031215620031b157600080fd5b815167ffffffffffffffff811115620031c957600080fd5b62003196848285016200314a565b600060208284031215620031ea57600080fd5b81516200293d8162002d8d565b60008151808452620032118160208601602086016200311b565b601f01601f19169290920160200192915050565b6060815260006200323a6060830186620031f7565b82810360208401526200324e8186620031f7565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620032b582850187620031f7565b925080851660e085015250509998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082620033225762003322620032e4565b500490565b6000600182016200333c576200333c620032fa565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620033736060830184620031f7565b95945050505050565b60008251620033908184602087016200311b565b9190910192915050565b600080600060608486031215620033b057600080fd5b835167ffffffffffffffff80821115620033c957600080fd5b620033d7878388016200314a565b94506020860151915080821115620033ee57600080fd5b50620033fd868287016200314a565b925050604084015162002fda8162002d8d565b600082620034225762003422620032e4565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006200346660608301878962003427565b82810360208401526200347b81868862003427565b91505060ff831660408301529695505050505050565b60008351620034a58184602088016200311b565b835190830190620034bb8183602088016200311b565b01949350505050565b60008085851115620034d557600080fd5b83861115620034e357600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200350c57600080fd5b8735620035198162002ae2565b965060208801356200352b8162002ae2565b95506040880135945060608801359350608088013562002e0a8162002d8d565b801515811462002af857600080fd5b600080600080600080600080610100898b0312156200357857600080fd5b8835620035858162002ae2565b97506020890135620035978162002ae2565b965060408901359550606089013594506080890135620035b7816200354b565b935060a0890135620035c98162002d8d565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620036275781600019048211156200360b576200360b620032fa565b808516156200361957918102915b93841c9390800290620035eb565b509250929050565b600082620036405750600162000ba2565b816200364f5750600062000ba2565b8160018114620036685760028114620036735762003693565b600191505062000ba2565b60ff841115620036875762003687620032fa565b50506001821b62000ba2565b5060208310610133831016604e8410600b8410161715620036b8575081810a62000ba2565b620036c48383620035e6565b8060001904821115620036db57620036db620032fa565b029392505050565b60006200293d83836200362f565b600082821015620037065762003706620032fa565b500390565b60008219821115620037215762003721620032fa565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200374f57600080fd5b5051919050565b6000602082840312156200376957600080fd5b81516200293d816200354b565b6020815260006200293d6020830184620031f756fe60c06040523480156200001157600080fd5b50604051620017db380380620017db8339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611321620004ba60003960006104e001526000818161034a01526104aa01526113216000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461036c578063dd62ed3e1461037f578063ffa1ad74146103b857600080fd5b8063a457c2d71461031f578063a9059cbb14610332578063cd0d00961461034557600080fd5b806395d89b41116100bd57806395d89b41146102d95780639dc29fac146102e1578063a3c573eb146102f457600080fd5b806370a08231146102905780637ecebe00146102b957600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103d8565b60405161019191906110b4565b60405180910390f35b6101ad6101a8366004611125565b61046a565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461114f565b610482565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104a6565b6101ad610276366004611125565b610502565b61028e610289366004611125565b610541565b005b6101c161029e36600461118b565b6001600160a01b031660009081526020819052604090205490565b6101c16102c736600461118b565b60066020526000908152604090205481565b6101846105d4565b61028e6102ef366004611125565b6105e3565b600554610307906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ad61032d366004611125565b61066d565b6101ad610340366004611125565b610717565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028e61037a3660046111ad565b610725565b6101c161038d366004611220565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103e790611253565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611253565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856109aa565b5060019392505050565b600033610490858285610b03565b61049b858585610b95565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104dd576104d846610dac565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610478908290869061053c9087906112a3565b6109aa565b6005546001600160a01b031633146105c65760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b6105d08282610e58565b5050565b6060600480546103e790611253565b6005546001600160a01b031633146106635760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084016105bd565b6105d08282610f37565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561070a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105bd565b61049b82868684036109aa565b600033610478818585610b95565b8342111561079a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866107e7836112bb565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108456104a6565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156108eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906109215750896001600160a01b0316816001600160a01b0316145b6109935760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105bd565b61099e8a8a8a6109aa565b50505050505050505050565b6001600160a01b038316610a255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610aa15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b8f5781811015610b825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105bd565b610b8f84848484036109aa565b50505050565b6001600160a01b038316610c115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610c8d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604090205481811015610d1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d539084906112a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9f91815260200190565b60405180910390a3610b8f565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610dd76103d8565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610eae5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105bd565b8060026000828254610ec091906112a3565b90915550506001600160a01b03821660009081526020819052604081208054839290610eed9084906112a3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610fb35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216600090815260208190526040902054818110156110425760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110719084906112d4565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610af6565b600060208083528351808285015260005b818110156110e1578581018301518582016040015282016110c5565b818111156110f3576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461112057600080fd5b919050565b6000806040838503121561113857600080fd5b61114183611109565b946020939093013593505050565b60008060006060848603121561116457600080fd5b61116d84611109565b925061117b60208501611109565b9150604084013590509250925092565b60006020828403121561119d57600080fd5b6111a682611109565b9392505050565b600080600080600080600060e0888a0312156111c857600080fd5b6111d188611109565b96506111df60208901611109565b95506040880135945060608801359350608088013560ff8116811461120357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561123357600080fd5b61123c83611109565b915061124a60208401611109565b90509250929050565b600181811c9082168061126757607f821691505b60208210810361128757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156112b6576112b661128d565b500190565b6000600182016112cd576112cd61128d565b5060010190565b6000828210156112e6576112e661128d565b50039056fea26469706673582212205d074ee584238a5fb66873e3fc67d479c99eb1688b3ca2f77c22e4f97ce77b0064736f6c634300080f0033a264697066735822122060e4844ad9ce717086f4bd60b8f5fde908812219549ad06e1605773fdd681c4d64736f6c634300080f0033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/polygonzkevmglobalexitroot.bin b/etherman/smartcontracts/bin/polygonzkevmglobalexitroot.bin new file mode 100644 index 0000000000..1c79cd036a --- /dev/null +++ b/etherman/smartcontracts/bin/polygonzkevmglobalexitroot.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506104f3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461015e57600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b7366004610455565b60036020526000908152604090205481565b61009660025481565b6100e56100e0366004610455565b610171565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e36600461048a565b6102f3565b600554610146906001600160a01b031681565b6040516001600160a01b0390911681526020016100a0565b600454610146906001600160a01b031681565b6005546001600160a01b031633148061019457506004546001600160a01b031633145b6102315760405162461bcd60e51b815260206004820152604260248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f743a3a7570646160448201527f746545786974526f6f743a204f6e6c7920616c6c6f77656420636f6e7472616360648201527f7473000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6005546001600160a01b031633036102495760018190555b6004546001600160a01b031633036102615760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036102ef57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103135750600054600160ff909116105b8061032d5750303b15801561032d575060005460ff166001145b61039f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610228565b6000805460ff1916600117905580156103c2576000805461ff0019166101001790555b600580546001600160a01b038086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560048054928516929091169190911790558015610450576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561046757600080fd5b5035919050565b80356001600160a01b038116811461048557600080fd5b919050565b6000806040838503121561049d57600080fd5b6104a68361046e565b91506104b46020840161046e565b9050925092905056fea26469706673582212204755a4cbf50d99cfafb99c5429e784137da120dba2e519fdf39654b3c4a8a5d864736f6c634300080f0033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/proofofefficiency.bin b/etherman/smartcontracts/bin/proofofefficiency.bin deleted file mode 100644 index f20e2cfed0..0000000000 --- a/etherman/smartcontracts/bin/proofofefficiency.bin +++ /dev/null @@ -1 +0,0 @@ -608060405234801561001057600080fd5b50615e7880620000216000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c80638c4a0af7116101de578063d8d1091b1161010f578063e8bf92ed116100ad578063f1d7b21c1161007c578063f1d7b21c14610876578063f2fde38b1461087e578063f851a44014610891578063f8b823e4146108a457600080fd5b8063e8bf92ed1461082a578063eaeb077b1461083d578063edc4112114610850578063f14916d61461086357600080fd5b8063dbc16976116100e9578063dbc16976146107ec578063e11f3f18146107f4578063e217cfd614610807578063e7a7ed021461081057600080fd5b8063d8d1091b146107ab578063d8f54db0146107be578063d939b315146107d257600080fd5b8063adc879e91161017c578063c0ed84e011610156578063c0ed84e014610763578063c89e42df1461076b578063cfa8ed471461077e578063d02103ca1461079857600080fd5b8063adc879e9146106d1578063b4d63f58146106eb578063b6b0b0971461074b57600080fd5b80639c9f3dfe116101b85780639c9f3dfe146106995780639f0d039d146106ac578063a3c573eb146106b4578063ab9fc5ef146106c757600080fd5b80638c4a0af71461066d5780638da5cb5b1461068057806399f5634e1461069157600080fd5b80634a1a89a7116102c3578063704b6c02116102615780637fcb3653116102305780637fcb3653146105c8578063837a4738146105db578063841b24d7146106495780638b48931e1461066357600080fd5b8063704b6c0214610587578063715018a61461059a5780637215541a146105a257806375c508b3146105b557600080fd5b8063542028d51161029d578063542028d51461053957806360943d6a146105415780636b8616ce146105545780636ff512cc1461057457600080fd5b80634a1a89a7146104ec5780634a910e6a146105065780635392c5e01461051957600080fd5b8063383b3be811610330578063423fa8561161030a578063423fa8561461049257806345605267146104ac578063458c0477146104c65780634834a343146104d957600080fd5b8063383b3be814610457578063394218e91461046a5780633c1582671461047f57600080fd5b806319d8ac611161036c57806319d8ac61146103ef578063220d78991461040257806329878983146104155780632d0889d31461044057600080fd5b8063107bf28c14610393578063137f1edf146103b157806315064c96146103d2575b600080fd5b61039b6108ad565b6040516103a891906152b6565b60405180910390f35b6103ba61070881565b6040516001600160401b0390911681526020016103a8565b6065546103df9060ff1681565b60405190151581526020016103a8565b6068546103ba906001600160401b031681565b61039b6104103660046152e5565b61093b565b606a54610428906001600160a01b031681565b6040516001600160a01b0390911681526020016103a8565b61044961ea6081565b6040519081526020016103a8565b6103df610465366004615332565b610afe565b61047d610478366004615332565b610b45565b005b61047d61048d36600461546f565b610d6e565b6068546103ba90600160401b90046001600160401b031681565b6068546103ba90600160801b90046001600160401b031681565b6072546103ba906001600160401b031681565b61047d6104e73660046155ad565b6116d0565b6072546103ba90600160401b90046001600160401b031681565b61047d610514366004615332565b611ab0565b610449610527366004615332565b606d6020526000908152604090205481565b61039b611d73565b61047d61054f36600461564f565b611d80565b610449610562366004615332565b60666020526000908152604090205481565b61047d610582366004615726565b612116565b61047d610595366004615726565b6121f0565b61047d6122a9565b61047d6105b0366004615332565b6122bd565b61047d6105c3366004615743565b612578565b6069546103ba906001600160401b031681565b61061e6105e93660046157e1565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103a8565b6072546103ba90600160c01b90046001600160401b031681565b6103ba62093a8081565b61047d61067b366004615808565b612668565b6033546001600160a01b0316610428565b610449612720565b61047d6106a7366004615332565b61281a565b607454610449565b607054610428906001600160a01b031681565b6103ba6206978081565b606c546103ba90600160a81b90046001600160401b031681565b6107266106f9366004615332565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103a8565b6065546104289061010090046001600160a01b031681565b6103ba612a31565b61047d610779366004615825565b612a7e565b60695461042890600160401b90046001600160a01b031681565b606c54610428906001600160a01b031681565b61047d6107b9366004615861565b612b25565b606c546103df90600160a01b900460ff1681565b6072546103ba90600160801b90046001600160401b031681565b61047d6131a3565b61047d610802366004615743565b6132f6565b6103ba6103e881565b6068546103ba90600160c01b90046001600160401b031681565b606b54610428906001600160a01b031681565b61047d61084b366004615953565b6134cb565b61047d61085e3660046155ad565b61390b565b61047d610871366004615726565b613a94565b610449600b81565b61047d61088c366004615726565b613b4d565b607354610428906001600160a01b031681565b61044960745481565b606f80546108ba90615997565b80601f01602080910402602001604051908101604052809291908181526020018280546108e690615997565b80156109335780601f1061090857610100808354040283529160200191610933565b820191906000526020600020905b81548152906001019060200180831161091657829003601f168201915b505050505081565b6001600160401b0380861660008181526067602052604080822054938816825290205460609291158061096d57508115155b6109f25760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f7420606482015264195e1a5cdd60da1b608482015260a4015b60405180910390fd5b80610a735760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f7420606482015264195e1a5cdd60da1b608482015260a4016109e9565b606c54604080516bffffffffffffffffffffffff193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610b3492600160801b909204811691166159e7565b6001600160401b0316111592915050565b6073546001600160a01b03163314610bb05760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b62093a806001600160401b0382161115610c455760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a73657450656e64696e6753746160448201527f746554696d656f75743a206578636565642068616c74206167677265676174696064820152691bdb881d1a5b595bdd5d60b21b608482015260a4016109e9565b60655460ff16610d00576072546001600160401b03600160c01b909104811690821610610d005760405162461bcd60e51b815260206004820152604960248201527f50726f6f664f66456666696369656e63793a3a7365745472757374656441676760448201527f72656761746f7254696d656f75743a206e65772074696d656f7574206d75737460648201527f206265206c6f7765720000000000000000000000000000000000000000000000608482015260a4016109e9565b6072805477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1906020015b60405180910390a150565b60655460ff1615610df25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b606954600160401b90046001600160a01b03163314610e795760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016109e9565b805180610ef95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e63652031206261746064820152610c6d60f31b608482015260a4016109e9565b6103e88110610f965760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2043616e6e6f742073657175656e63652074686174206d616e7920626160648201527f7463686573000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156114e5576000878281518110610fe957610fe9615a12565b60200260200101519050600081606001516001600160401b031611156111cb578361101381615a28565b94505060008160000151805190602001208260200151836060015160405160200161105e93929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051601f1981840301815291815281516020928301206001600160401b03881660009081526066909352912054909150811461110f5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a4016109e9565b81606001516001600160401b031682604001516001600160401b031610156111c55760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016109e9565b5061137e565b6020810151158061126d5750606c5460208201516040517f257b36320000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163257b3632916112279160040190815260200190565b6020604051808303816000875af1158015611246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126a9190615a4e565b15155b6112df5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016109e9565b80515161ea601161137e5760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f664566666963696550656e64696e67537461746563793a3a736560448201527f7175656e6365426174636865733a205472616e73616374696f6e73206279746560648201527f73206f766572666c6f7700000000000000000000000000000000000000000000608482015260a4016109e9565b856001600160401b031681604001516001600160401b0316101580156113b157504281604001516001600160401b031611155b6114495760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c0160405160208183030381529060405280519060200120925084806114c790615a28565b955050806040015195505080806114dd90615a67565b915050610fcd565b506068546001600160401b03600160c01b909104811690831611156115725760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016109e9565b60685460009061159290600160801b90046001600160401b031684615a80565b6115a5906001600160401b031687615aa8565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166fffffffffffffffffffffffffffffffff199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b92871692909202919091179055607454909150611681903390309084906116689190615abf565b60655461010090046001600160a01b0316929190613bda565b611689613c8b565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156117545760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b6072546001600160401b03878116600090815260676020526040902060010154429261178b92600160c01b909104811691166159e7565b6001600160401b0316111561182e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20747275737465642061676772656761746f722074696d656f7574206e6f7460648201527f2065787069726564000000000000000000000000000000000000000000000000608482015260a4016109e9565b6103e861183b8888615a80565b6001600160401b0316106118c15760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2063616e6e6f74207665726966792074686174206d616e79206261746368656064820152607360f81b608482015260a4016109e9565b6118d18888888888888888613d2f565b6118da866142b4565b607254600160801b90046001600160401b03166000036119ab576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d60205260409020859055607254161561194857607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561198e57600080fd5b505af11580156119a2573d6000803e3d6000fd5b50505050611a65565b6119b3613c8b565b607280546001600160401b03169060006119cc83615a28565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026fffffffffffffffffffffffffffffffff199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b6001600160401b03811615801590611add57506072546001600160401b03600160401b9091048116908216115b8015611af857506072546001600160401b0390811690821611155b611b905760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a636f6e736f6c6964617465506560448201527f6e64696e6753746174653a2070656e64696e6753746174654e756d206d75737460648201527f20696e76616c6964000000000000000000000000000000000000000000000000608482015260a4016109e9565b606a546001600160a01b03163314611c4357611bab81610afe565b611c435760405162461bcd60e51b815260206004820152605960248201527f50726f6f664f66456666696369656e63793a3a636f6e736f6c6964617465506560448201527f6e64696e6753746174653a2070656e64696e67207374617465206973206e6f7460648201527f20726561647920746f20626520636f6e736f6c69646174656400000000000000608482015260a4016109e9565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d9094529382902092909255607280546fffffffffffffffff000000000000000019169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b158015611d0557600080fd5b505af1158015611d19573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051611d6691815260200190565b60405180910390a3505050565b606e80546108ba90615997565b600054610100900460ff1615808015611da05750600054600160ff909116105b80611dba5750303b158015611dba575060005460ff166001145b611e2c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109e9565b6000805460ff191660011790558015611e4f576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008c851602179055606b805482168a841617905560708054909116918816919091179055611eca6020860186615726565b607380546001600160a01b0319166001600160a01b0392909216919091179055611efa6060860160408701615726565b606980546001600160a01b0392909216600160401b027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055611f4a60c0860160a08701615726565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611fa760e0860160c08701615332565b607280546001600160401b0392909216600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055611fef6040860160208701615332565b606c80546001600160401b0392909216600160a81b027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff90921691909117905561203f6080860160608701615332565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b1990921691909117905561207b60a0860160808701615808565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e6120a38482615b24565b50606f6120b08382615b24565b50670de0b6b3a76400006074556120c56144d6565b801561210b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146121815760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff16600160401b6001600160a01b038416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610d63565b6073546001600160a01b0316331461225b5760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b607380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190602001610d63565b6122b161455c565b6122bb60006145b6565b565b6033546001600160a01b0316331461256d576072546000906001600160401b03161561230e57506072546001600160401b03908116600090815260716020526040902054600160401b90041661231c565b506069546001600160401b03165b80826001600160401b0316116123c05760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a6163746976617465456d65726760448201527f656e637953746174653a20426174636820616c7265616479207665726966696560648201527f6400000000000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6068546001600160401b03600160401b90910481169083161180159061240257506001600160401b038083166000908152606760205260409020600101541615155b61249a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a6163746976617465456d65726760448201527f656e637953746174653a204261746368206e6f742073657175656e636564206f60648201527f72206e6f7420656e64206f662073657175656e63650000000000000000000000608482015260a4016109e9565b6001600160401b0380831660009081526067602052604090206001015442916124c89162093a8091166159e7565b6001600160401b0316111561256b5760405162461bcd60e51b815260206004820152605260248201527f50726f6f664f66456666696369656e63793a3a6163746976617465456d65726760448201527f656e637953746174653a204167677265676174696f6e2068616c742074696d6560648201527f6f7574206973206e6f7420657870697265640000000000000000000000000000608482015260a4016109e9565b505b612575614608565b50565b60655460ff16156125fc5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b61260d898989898989898989614678565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a161210b614608565b6073546001600160a01b031633146126d35760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610d6390831515815260200190565b6065546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009182916101009091046001600160a01b0316906370a0823190602401602060405180830381865afa15801561278a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ae9190615a4e565b905060006127ba612a31565b6068546001600160401b03600160401b82048116916127ea91600160801b8204811691600160c01b900416615a80565b6127f491906159e7565b6127fe9190615a80565b6001600160401b031690506128138183615bf9565b9250505090565b6073546001600160a01b031633146128855760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b62093a806001600160401b038216111561291a5760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a73657450656e64696e6753746160448201527f746554696d656f75743a206578636565642068616c74206167677265676174696064820152691bdb881d1a5b595bdd5d60b21b608482015260a4016109e9565b60655460ff166129d6576072546001600160401b03600160801b9091048116908216106129d65760405162461bcd60e51b8152602060048201526044602482018190527f50726f6f664f66456666696369656e63793a3a73657450656e64696e67537461908201527f746554696d656f75743a206e65772074696d656f7574206d757374206265206c60648201527f6f77657200000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610d63565b6072546000906001600160401b031615612a6e57506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b03163314612ae95760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606e612af58282615b24565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610d6391906152b6565b60655460ff1615612ba95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b606c54600160a01b900460ff161515600114612c3e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f72636520626174636820697320616064820152677661696c61626c6560c01b608482015260a4016109e9565b805180612cbe5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c656173742031206261746064820152610c6d60f31b608482015260a4016109e9565b6103e88110612d3f5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2063616e6e6f74207665726966792074686174206d616e79206261746368656064820152607360f81b608482015260a4016109e9565b6068546001600160401b03600160c01b8204811691612d67918491600160801b900416615c0d565b1115612ddb5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016109e9565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b8481101561309c576000868281518110612e2857612e28615a12565b602002602001015190508380612e3d90615a28565b825180516020918201208185015160408087015181519485019390935283015260c01b6001600160c01b03191660608201529095506000915060680160408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612f455760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016109e9565b612f50600188615aa8565b830361300d5742620697808360400151612f6a91906159e7565b6001600160401b0316111561300d5760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016109e9565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c01604051602081830303815290604052805190602001209350858061308490615a28565b9650505050808061309490615a67565b915050612e0c565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166fffffffffffffffffffffffffffffffff199092169190911792861685029290921790915585547fffffffffffffffff00000000000000000000000000000000ffffffffffffffff1694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661321b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016109e9565b6073546001600160a01b031633146132865760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132d657600080fd5b505af11580156132ea573d6000803e3d6000fd5b505050506122bb614e28565b606a546001600160a01b031633146133805760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564416760448201527f6772656761746f723a206f6e6c7920747275737465642041676772656761746f6064820152603960f91b608482015260a4016109e9565b613391898989898989898989614678565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156133e557607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561342b57600080fd5b505af115801561343f573d6000803e3d6000fd5b50506072805477ffffffffffffffffffffffffffffffffffffffffffffffff167a093a80000000000000000000000000000000000000000000000000179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff161561354f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b606c54600160a01b900460ff1615156001146135e45760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f72636520626174636820697320616064820152677661696c61626c6560c01b608482015260a4016109e9565b60006135ef60745490565b9050818111156136675760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016109e9565b61ea608351106136df5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016109e9565b6065546136fc9061010090046001600160a01b0316333084613bda565b606c54604080517f3ed691ef00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa15801561375f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137839190615a4e565b60688054919250600160c01b9091046001600160401b03169060186137a783615a28565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550508380519060200120814260405160200161380693929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b0316600090815260669093529120553233036138aa57606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613905565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9318233876040516138fc93929190615c25565b60405180910390a25b50505050565b606a546001600160a01b031633146139955760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564416760448201527f6772656761746f723a206f6e6c7920747275737465642041676772656761746f6064820152603960f91b608482015260a4016109e9565b6139a58888888888888888613d2f565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156139f957607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015613a3f57600080fd5b505af1158015613a53573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611a9e565b6073546001600160a01b03163314613aff5760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90602001610d63565b613b5561455c565b6001600160a01b038116613bd15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109e9565b612575816145b6565b6040516001600160a01b03808516602483015283166044820152606481018290526139059085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614ed5565b6072546001600160401b03600160401b82048116911611156122bb57607254600090613cc890600160401b90046001600160401b031660016159e7565b9050613cd381610afe565b1561257557607254600090600290613cf59084906001600160401b0316615a80565b613cff9190615c56565b613d0990836159e7565b9050613d1481610afe565b15613d2657613d2281611ab0565b5050565b613d2282611ab0565b600080613d3a612a31565b90506001600160401b038a1615613ec6576072546001600160401b03908116908b161115613df65760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2070656e64696e6753746174654e756d206d757374206265206c657373206f60648201527f7220657175616c207468616e206c61737450656e64696e675374617465000000608482015260a4016109e9565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613ec05760405162461bcd60e51b815260206004820152605160248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206d617463682074686520706560648201527f6e64696e67207374617465206261746368000000000000000000000000000000608482015260a4016109e9565b50614033565b6001600160401b0389166000908152606d6020526040902054915081613f7a5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016109e9565b806001600160401b0316896001600160401b031611156140335760405162461bcd60e51b815260206004820152606260248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e2063757272656e744c61737456657269666965644261746084820152610c6d60f31b60a482015260c4016109e9565b806001600160401b0316886001600160401b0316116140e05760405162461bcd60e51b815260206004820152605c60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e2063757272656e744c6173745665726966696564426174636800000000608482015260a4016109e9565b60006140ef8a8a8a868b61093b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516141249190615c7c565b602060405180830381855afa158015614141573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141649190615a4e565b61416e9190615c98565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916141b2918b918b918b9190600401615cac565b602060405180830381865afa1580156141cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f39190615d26565b6142655760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016109e9565b6142a633614273858d615a80565b6001600160401b0316614284612720565b61428e9190615abf565b60655461010090046001600160a01b03169190614fbf565b505050505050505050505050565b60006142be612a31565b9050816000806142ce8484615a80565b6001600160401b031690505b836001600160401b0316836001600160401b031614614378576001600160401b0380851660009081526067602052604090206001810154909161070891614322911642615aa8565b111561435d57600181015461434790600160401b90046001600160401b031686615a80565b61435a906001600160401b031684615c0d565b92505b60010154600160401b90046001600160401b031692506142da565b60006143848383615aa8565b90508281101561442257600061439a8285615aa8565b6074549091505b60208211156143ed576d04ee2d6d415b85acef81000000006143c56020600b615e27565b6143cf9083615abf565b6143d99190615bf9565b90506143e6602083615aa8565b91506143a1565b6143f882600a615e36565b61440383600b615e36565b61440d9083615abf565b6144179190615bf9565b607455506144ce9050565b600061442e8483615aa8565b6074549091505b6020821115614481576d04ee2d6d415b85acef81000000006144596020600b615e27565b6144639083615abf565b61446d9190615bf9565b905061447a602083615aa8565b9150614435565b61448c82600a615e36565b61449783600b615e36565b6144a19083615abf565b6144ab9190615bf9565b9050806074546074546144be9190615abf565b6144c89190615bf9565b60745550505b505050505050565b600054610100900460ff166145535760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016109e9565b6122bb336145b6565b6033546001600160a01b031633146122bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109e9565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561465857600080fd5b505af115801561466c573d6000803e3d6000fd5b505050506122bb615008565b60006001600160401b038a161561484e576072546001600160401b03908116908b16111561475a5760405162461bcd60e51b815260206004820152607160248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2070656e64696e6753746160648201527f74654e756d206d757374206265206c657373206f7220657175616c207468616e60848201527f206c61737450656e64696e67537461746500000000000000000000000000000060a482015260c4016109e9565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146148485760405162461bcd60e51b815260206004820152606560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20696e69744e756d42617460648201527f6368206d757374206d61746368207468652070656e64696e672073746174652060848201527f626174636800000000000000000000000000000000000000000000000000000060a482015260c4016109e9565b506149d2565b506001600160401b0387166000908152606d6020526040902054806149015760405162461bcd60e51b815260206004820152605c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20696e69744e756d42617460648201527f636820737461746520726f6f7420646f6573206e6f7420657869737400000000608482015260a4016109e9565b6069546001600160401b0390811690891611156149d25760405162461bcd60e51b815260206004820152607660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20696e69744e756d42617460648201527f6368206d757374206265206c657373206f7220657175616c207468616e20637560848201527f7272656e744c617374566572696669656442617463680000000000000000000060a482015260c4016109e9565b6072546001600160401b03908116908a1611801590614a025750896001600160401b0316896001600160401b0316115b8015614a2357506072546001600160401b03600160401b9091048116908a16115b614abb5760405162461bcd60e51b815260206004820152605460248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2066696e616c50656e646960648201527f6e6753746174654e756d20696e636f7272656374000000000000000000000000608482015260a4016109e9565b6001600160401b03898116600090815260716020526040902054600160401b9004811690881614614ba05760405162461bcd60e51b815260206004820152606f60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2066696e616c4e6577426160648201527f746368206d75737420626520657175616c207468616e2063757272656e744c6160848201527f737456657269666965644261746368000000000000000000000000000000000060a482015260c4016109e9565b6000614baf898989858a61093b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051614be49190615c7c565b602060405180830381855afa158015614c01573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614c249190615a4e565b614c2e9190615c98565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614c72918a918a918a9190600401615cac565b602060405180830381865afa158015614c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cb39190615d26565b614d4b5760405162461bcd60e51b815260206004820152604360248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20494e56414c49445f505260648201527f4f4f460000000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6001600160401b038b166000908152607160205260409020600201548790036142a65760405162461bcd60e51b815260206004820152606760248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2073746f72656420726f6f60648201527f74206d75737420626520646966666572656e74207468616e206e65772073746160848201527f746520726f6f740000000000000000000000000000000000000000000000000060a482015260c4016109e9565b60655460ff16614ea05760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016109e9565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000614f2a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150c49092919063ffffffff16565b805190915015614fba5780806020019051810190614f489190615d26565b614fba5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109e9565b505050565b6040516001600160a01b038316602482015260448101829052614fba9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613c27565b60655460ff161561508c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60606150d384846000856150dd565b90505b9392505050565b6060824710156151555760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016109e9565b6001600160a01b0385163b6151ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109e9565b600080866001600160a01b031685876040516151c89190615c7c565b60006040518083038185875af1925050503d8060008114615205576040519150601f19603f3d011682016040523d82523d6000602084013e61520a565b606091505b509150915061521a828286615225565b979650505050505050565b606083156152345750816150d6565b8251156152445782518084602001fd5b8160405162461bcd60e51b81526004016109e991906152b6565b60005b83811015615279578181015183820152602001615261565b838111156139055750506000910152565b600081518084526152a281602086016020860161525e565b601f01601f19169290920160200192915050565b6020815260006150d6602083018461528a565b80356001600160401b03811681146152e057600080fd5b919050565b600080600080600060a086880312156152fd57600080fd5b615306866152c9565b9450615314602087016152c9565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561534457600080fd5b6150d6826152c9565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156153855761538561534d565b60405290565b604051606081016001600160401b03811182821017156153855761538561534d565b604051601f8201601f191681016001600160401b03811182821017156153d5576153d561534d565b604052919050565b60006001600160401b038211156153f6576153f661534d565b5060051b60200190565b600082601f83011261541157600080fd5b81356001600160401b0381111561542a5761542a61534d565b61543d601f8201601f19166020016153ad565b81815284602083860101111561545257600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561548257600080fd5b82356001600160401b038082111561549957600080fd5b818501915085601f8301126154ad57600080fd5b81356154c06154bb826153dd565b6153ad565b81815260059190911b830184019084810190888311156154df57600080fd5b8585015b83811015615578578035858111156154fb5760008081fd5b86016080818c03601f19018113156155135760008081fd5b61551b615363565b898301358881111561552d5760008081fd5b61553b8e8c83870101615400565b8252506040808401358b83015260606155558186016152c9565b828401526155648486016152c9565b9083015250855250509186019186016154e3565b5098975050505050505050565b806040810183101561559657600080fd5b92915050565b806080810183101561559657600080fd5b6000806000806000806000806101a0898b0312156155ca57600080fd5b6155d3896152c9565b97506155e160208a016152c9565b96506155ef60408a016152c9565b9550606089013594506080890135935061560c8a60a08b01615585565b925061561b8a60e08b0161559c565b915061562b8a6101608b01615585565b90509295985092959890939650565b6001600160a01b038116811461257557600080fd5b600080600080600080600080888a036101c081121561566d57600080fd5b89356156788161563a565b985060208a01356156888161563a565b975060408a01356156988161563a565b965060608a01356156a88161563a565b955060e0607f19820112156156bc57600080fd5b5060808901935061016089013592506101808901356001600160401b03808211156156e657600080fd5b6156f28c838d01615400565b93506101a08b013591508082111561570957600080fd5b506157168b828c01615400565b9150509295985092959890939650565b60006020828403121561573857600080fd5b81356150d68161563a565b60008060008060008060008060006101c08a8c03121561576257600080fd5b61576b8a6152c9565b985061577960208b016152c9565b975061578760408b016152c9565b965061579560608b016152c9565b955060808a0135945060a08a013593506157b28b60c08c01615585565b92506157c28b6101008c0161559c565b91506157d28b6101808c01615585565b90509295985092959850929598565b6000602082840312156157f357600080fd5b5035919050565b801515811461257557600080fd5b60006020828403121561581a57600080fd5b81356150d6816157fa565b60006020828403121561583757600080fd5b81356001600160401b0381111561584d57600080fd5b61585984828501615400565b949350505050565b6000602080838503121561587457600080fd5b82356001600160401b038082111561588b57600080fd5b818501915085601f83011261589f57600080fd5b81356158ad6154bb826153dd565b81815260059190911b830184019084810190888311156158cc57600080fd5b8585015b83811015615578578035858111156158e85760008081fd5b86016060818c03601f19018113156159005760008081fd5b61590861538b565b898301358881111561591a5760008081fd5b6159288e8c83870101615400565b8252506040808401358b8301526159408385016152c9565b90820152855250509186019186016158d0565b6000806040838503121561596657600080fd5b82356001600160401b0381111561597c57600080fd5b61598885828601615400565b95602094909401359450505050565b600181811c908216806159ab57607f821691505b6020821081036159cb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115615a0957615a096159d1565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103615a4457615a446159d1565b6001019392505050565b600060208284031215615a6057600080fd5b5051919050565b600060018201615a7957615a796159d1565b5060010190565b60006001600160401b0383811690831681811015615aa057615aa06159d1565b039392505050565b600082821015615aba57615aba6159d1565b500390565b6000816000190483118215151615615ad957615ad96159d1565b500290565b601f821115614fba57600081815260208120601f850160051c81016020861015615b055750805b601f850160051c820191505b818110156144ce57828155600101615b11565b81516001600160401b03811115615b3d57615b3d61534d565b615b5181615b4b8454615997565b84615ade565b602080601f831160018114615b865760008415615b6e5750858301515b600019600386901b1c1916600185901b1785556144ce565b600085815260208120601f198616915b82811015615bb557888601518255948401946001909101908401615b96565b5085821015615bd35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b600082615c0857615c08615be3565b500490565b60008219821115615c2057615c206159d1565b500190565b8381526001600160a01b0383166020820152606060408201526000615c4d606083018461528a565b95945050505050565b60006001600160401b0380841680615c7057615c70615be3565b92169190910492915050565b60008251615c8e81846020870161525e565b9190910192915050565b600082615ca757615ca7615be3565b500690565b61012081016040808784376000838201818152879190815b6002811015615ce457848483379084018281529284019290600101615cc4565b5050828760c0870137610100850181815286935091505b6001811015615d1a578251825260209283019290910190600101615cfb565b50505095945050505050565b600060208284031215615d3857600080fd5b81516150d6816157fa565b600181815b80851115615d7e578160001904821115615d6457615d646159d1565b80851615615d7157918102915b93841c9390800290615d48565b509250929050565b600082615d9557506001615596565b81615da257506000615596565b8160018114615db85760028114615dc257615dde565b6001915050615596565b60ff841115615dd357615dd36159d1565b50506001821b615596565b5060208310610133831016604e8410600b8410161715615e01575081810a615596565b615e0b8383615d43565b8060001904821115615e1f57615e1f6159d1565b029392505050565b60006150d660ff841683615d86565b60006150d68383615d8656fea26469706673582212200dcdd6e2039faa0c7979293eff6e1f1020ae168d989673e3ec2a0911663b442664736f6c634300080f0033 \ No newline at end of file diff --git a/etherman/smartcontracts/bridge/bridge.go b/etherman/smartcontracts/bridge/bridge.go deleted file mode 100644 index 1db72e001d..0000000000 --- a/etherman/smartcontracts/bridge/bridge.go +++ /dev/null @@ -1,1931 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package bridge - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription -) - -// BridgeMetaData contains all meta data concerning the Bridge contract. -var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"depositCount\",\"type\":\"uint32\"}],\"name\":\"BridgeEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wrappedTokenAddress\",\"type\":\"address\"}],\"name\":\"NewWrappedToken\",\"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\"},{\"inputs\":[],\"name\":\"LEAF_TYPE_ASSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LEAF_TYPE_MESSAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAINNET_NETWORK_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"bridgeAsset\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"bridgeMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimedBitMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDepositRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"getLeafValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"name\":\"getTokenWrappedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIGlobalExitRootManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_networkID\",\"type\":\"uint32\"},{\"internalType\":\"contractIGlobalExitRootManager\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poeAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"isClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"precalculatedWrapperAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"tokenInfoToWrappedToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"leafHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyMerkleProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokenToTokenInfo\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50615114806100206000396000f3fe608060405260043610620001cf5760003560e01c806381b1c17411620000ff578063d02103ca1162000095578063ed6be5c9116200006c578063ed6be5c91462000569578063ee25560b1462000580578063f2fde38b14620005b1578063ff634ed714620005d657600080fd5b8063d02103ca1462000518578063d96a15f7146200053a578063dbc16976146200055157600080fd5b80639e34070f11620000d65780639e34070f146200046f578063a08e8a081462000494578063aaa13cc214620004be578063bab161bf14620004e357600080fd5b806381b1c17414620003f35780638da5cb5b146200042d5780638f611519146200044d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200036c578063647c576c1462000391578063715018a614620003b65780637b6323c114620003ce57600080fd5b80633ae05047146200030a5780633da8168214620003225780633e197043146200034757600080fd5b806322e95f2c11620001aa57806322e95f2c14620002365780632dfdf0b51462000274578063318aee3d146200029b57600080fd5b80630871e97114620001d457806315064c9614620001ed5780632072f6c5146200021e575b600080fd5b620001eb620001e536600462002d0f565b620005ed565b005b348015620001fa57600080fd5b50602254620002099060ff1681565b60405190151581526020015b60405180910390f35b3480156200022b57600080fd5b50620001eb62000aec565b3480156200024357600080fd5b506200025b6200025536600462002d9c565b62000b8e565b6040516001600160a01b03909116815260200162000215565b3480156200028157600080fd5b506200028c60215481565b60405190815260200162000215565b348015620002a857600080fd5b50620002e5620002ba36600462002dd8565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b0390911660208301520162000215565b3480156200031757600080fd5b506200028c62000bf9565b3480156200032f57600080fd5b50620002096200034136600462002ec0565b62000cec565b3480156200035457600080fd5b506200028c6200036636600462002f3e565b62000dec565b3480156200037957600080fd5b50620001eb6200038b3660046200304f565b62000e96565b3480156200039e57600080fd5b50620001eb620003b036600462003136565b620010de565b348015620003c357600080fd5b50620001eb6200125e565b348015620003db57600080fd5b50620001eb620003ed3660046200304f565b62001274565b3480156200040057600080fd5b506200025b6200041236600462003186565b6089602052600090815260409020546001600160a01b031681565b3480156200043a57600080fd5b506055546001600160a01b03166200025b565b3480156200045a57600080fd5b50608c546200025b906001600160a01b031681565b3480156200047c57600080fd5b50620002096200048e36600462003186565b620017c2565b348015620004a157600080fd5b50620004ab600081565b60405160ff909116815260200162000215565b348015620004cb57600080fd5b506200025b620004dd366004620031a0565b62001807565b348015620004f057600080fd5b50608754620005029063ffffffff1681565b60405163ffffffff909116815260200162000215565b3480156200052557600080fd5b50608b546200025b906001600160a01b031681565b620001eb6200054b36600462003254565b6200195b565b3480156200055e57600080fd5b50620001eb62001b48565b3480156200057657600080fd5b5062000502600081565b3480156200058d57600080fd5b506200028c6200059f36600462003186565b60886020526000908152604090205481565b348015620005be57600080fd5b50620001eb620005d036600462002dd8565b62001be8565b348015620005e357600080fd5b50620004ab600181565b60225460ff1615620006775760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620006e75760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e546044820152692fa122afa4aa29a2a62360b11b60648201526084016200066e565b60008060606001600160a01b0389166200077c57853414620007725760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200066e565b6000915062000a06565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000863576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200082a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008509190620032cb565b5060208101518151909450925062000a04565b84156200087857620008788a88888862001c7e565b6200088f6001600160a01b038b1633308a620021e8565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620008e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200091091908101906200336e565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200094f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200097991908101906200336e565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009de9190620033a7565b604051602001620009f293929190620033f5565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000a4898979695949392919062003432565b60405180910390a162000a7362000a6d600084868c8c8c888051906020012062000dec565b6200226e565b608b546001600160a01b03166333d6247d62000a8e62000bf9565b6040518263ffffffff1660e01b815260040162000aad91815260200190565b600060405180830381600087803b15801562000ac857600080fd5b505af115801562000add573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000b825760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201526a18de4818dbdb9d1c9858dd60aa1b608482015260a4016200066e565b62000b8c620023d2565b565b6040805160e084901b6001600160e01b031916602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000ce3578260011660010362000c64576001816020811062000c305762000c306200349e565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000c91565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000c9e600284620034e0565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000cda90620034f7565b91505062000c04565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000ddf578160011660010362000d695786818151811062000d275762000d276200349e565b60200260200101518360405160200162000d4b929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000dbb565b8287828151811062000d7f5762000d7f6200349e565b602002602001015160405160200162000da2929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000dc8600283620034e0565b91508062000dd681620034f7565b91505062000cfc565b5050909114949350505050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201526001600160e01b031960e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000f1c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b62000f328a8a8a8a8a8a8a8a8a8a600162002490565b62000f438963ffffffff1662002759565b6000836001600160a01b03168387898560405160240162000f679392919062003513565b60408051601f198184030181529181526020820180516001600160e01b03167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000fb791906200354c565b60006040518083038185875af1925050503d806000811462000ff6576040519150601f19603f3d011682016040523d82523d6000602084013e62000ffb565b606091505b5050905080620010735760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200066e565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff1615808015620010ff5750600054600160ff909116105b806200111b5750303b1580156200111b575060005460ff166001145b6200118f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200066e565b6000805460ff191660011790558015620011b3576000805461ff0019166101001790555b6087805463ffffffff861663ffffffff19909116179055608b80546001600160a01b0380861673ffffffffffffffffffffffffffffffffffffffff1992831617909255608c805492851692909116919091179055620012116200279b565b801562001258576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6200126862002825565b62000b8c600062002881565b60225460ff1615620012fa5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b620013108a8a8a8a8a8a8a8a8a8a600062002490565b620013218963ffffffff1662002759565b6001600160a01b0385166200142057604080516000808252602082019092526001600160a01b0385169084906040516200135c91906200354c565b60006040518083038185875af1925050503d80600081146200139b576040519150601f19603f3d011682016040523d82523d6000602084013e620013a0565b606091505b5050905080620014195760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200066e565b5062001758565b60875463ffffffff9081169087160362001450576200144a6001600160a01b0386168484620028e0565b62001758565b6040516001600160e01b031960e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620016dd57600080600085806020019051810190620014d891906200356a565b925092509250600085848484604051620014f29062002c78565b6200150093929190620033f5565b8190604051809103906000f590508015801562001521573d6000803e3d6000fd5b506040516340c10f1960e01b81526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001576573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200159c9190620032cb565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620016cb9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001755565b6040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af11580156200172d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017539190620032cb565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600080620017d361010084620034e0565b90506000620017e561010085620035e0565b60009283526088602052604090922054600190921b9182169091149392505050565b6040516001600160e01b031960e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620018729062002c78565b601f1982820381018352601f9091011660408190526200189f908d908d908d908d908d9060200162003620565b60408051601f1981840301815290829052620018bf929160200162003661565b604051602081830303815290604052805190602001206040516020016200193594939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620019e15760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b60875463ffffffff9081169084160362001a515760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e546044820152692fa122afa4aa29a2a62360b11b60648201526084016200066e565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001a9e9260019263ffffffff9092169133918991899134918a919062003432565b60405180910390a162001ad562000a6d6001608760009054906101000a900463ffffffff1633878734888051906020012062000dec565b608b546001600160a01b03166333d6247d62001af062000bf9565b6040518263ffffffff1660e01b815260040162001b0f91815260200190565b600060405180830381600087803b15801562001b2a57600080fd5b505af115801562001b3f573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001bde5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201526a18de4818dbdb9d1c9858dd60aa1b608482015260a4016200066e565b62000b8c6200292b565b62001bf262002825565b6001600160a01b03811662001c705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200066e565b62001c7b8162002881565b50565b600062001cc183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620029da92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000006001600160e01b031982160162001f7e57600080808080808062001d0c896004818d62003694565b81019062001d1b9190620036c0565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462001db25760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200066e565b6001600160a01b038616301462001e1a5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f42456044820152645f5448495360d81b60648201526084016200066e565b8a851462001e915760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200066e565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b03167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001f2a91906200354c565b6000604051808303816000865af19150503d806000811462001f69576040519150601f19603f3d011682016040523d82523d6000602084013e62001f6e565b606091505b50505050505050505050620021e1565b6001600160e01b031981166323f2ebc360e21b1462001fe05760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200066e565b60008080808080808062001ff88a6004818e62003694565b8101906200200791906200371b565b97509750975097509750975097509750336001600160a01b0316886001600160a01b031614620020a05760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200066e565b6001600160a01b0387163014620021085760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f42456044820152645f5448495360d81b60648201526084016200066e565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f16916200219191906200354c565b6000604051808303816000865af19150503d8060008114620021d0576040519150601f19603f3d011682016040523d82523d6000602084013e620021d5565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620012589085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152620029e1565b8060016200227f60206002620038a4565b6200228b9190620038b2565b60215410620023035760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200066e565b600160216000828254620023189190620038cc565b909155505060215460005b6020811015620023c25781600116600103620023585782600182602081106200235057620023506200349e565b015550505050565b600181602081106200236e576200236e6200349e565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620023ab9190620034e0565b915080620023b981620034f7565b91505062002323565b50620023cd620038e7565b505050565b60225460ff1615620024585760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016200066e565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b620024a18a63ffffffff16620017c2565b15620025155760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200066e565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620025a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025c89190620038fd565b905080600003620026425760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200066e565b60875463ffffffff878116911614620026c45760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200066e565b60875460009063ffffffff16620026dd575088620026e0565b50895b6200270b620026fc848b8b8b8b8b8b8051906020012062000dec565b8e8e63ffffffff168462000cec565b62000add5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200066e565b60006200276961010083620034e0565b905060006200277b61010084620035e0565b6000928352608860205260409092208054600190931b9092179091555050565b600054610100900460ff166200281a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200066e565b62000b8c3362002881565b6055546001600160a01b0316331462000b8c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200066e565b605580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620023cd9084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002236565b60225460ff16620029a55760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200066e565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002a38826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002acd9092919063ffffffff16565b805190915015620023cd578080602001905181019062002a599190620032cb565b620023cd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200066e565b606062002ade848460008562002ae8565b90505b9392505050565b60608247101562002b625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016200066e565b6001600160a01b0385163b62002bbb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200066e565b600080866001600160a01b0316858760405162002bd991906200354c565b60006040518083038185875af1925050503d806000811462002c18576040519150601f19603f3d011682016040523d82523d6000602084013e62002c1d565b606091505b509150915062002c2f82828662002c3a565b979650505050505050565b6060831562002c4b57508162002ae1565b82511562002c5c5782518084602001fd5b8160405162461bcd60e51b81526004016200066e919062003917565b6117b2806200392d83390190565b6001600160a01b038116811462001c7b57600080fd5b803562002ca98162002c86565b919050565b803563ffffffff8116811462002ca957600080fd5b60008083601f84011262002cd657600080fd5b50813567ffffffffffffffff81111562002cef57600080fd5b60208301915083602082850101111562002d0857600080fd5b9250929050565b60008060008060008060a0878903121562002d2957600080fd5b863562002d368162002c86565b955062002d466020880162002cae565b9450604087013562002d588162002c86565b935060608701359250608087013567ffffffffffffffff81111562002d7c57600080fd5b62002d8a89828a0162002cc3565b979a9699509497509295939492505050565b6000806040838503121562002db057600080fd5b62002dbb8362002cae565b9150602083013562002dcd8162002c86565b809150509250929050565b60006020828403121562002deb57600080fd5b813562002ae18162002c86565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002e3a5762002e3a62002df8565b604052919050565b600082601f83011262002e5457600080fd5b8135602067ffffffffffffffff82111562002e735762002e7362002df8565b8160051b62002e8482820162002e0e565b928352848101820192828101908785111562002e9f57600080fd5b83870192505b8483101562002c2f5782358252918301919083019062002ea5565b6000806000806080858703121562002ed757600080fd5b84359350602085013567ffffffffffffffff8082111562002ef757600080fd5b62002f058883890162002e42565b945060408701359150808216821462002f1d57600080fd5b509396929550929360600135925050565b60ff8116811462001c7b57600080fd5b600080600080600080600060e0888a03121562002f5a57600080fd5b873562002f678162002f2e565b965062002f776020890162002cae565b9550604088013562002f898162002c86565b945062002f996060890162002cae565b9350608088013562002fab8162002c86565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562002fe55762002fe562002df8565b50601f01601f191660200190565b600082601f8301126200300557600080fd5b81356200301c620030168262002fc8565b62002e0e565b8181528460208386010111156200303257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200307057600080fd5b8a3567ffffffffffffffff808211156200308957600080fd5b620030978e838f0162002e42565b9b50620030a760208e0162002cae565b9a5060408d0135995060608d01359850620030c560808e0162002cae565b9750620030d560a08e0162002c9c565b9650620030e560c08e0162002cae565b9550620030f560e08e0162002c9c565b94506101008d013593506101208d01359150808211156200311557600080fd5b50620031248d828e0162002ff3565b9150509295989b9194979a5092959850565b6000806000606084860312156200314c57600080fd5b620031578462002cae565b92506020840135620031698162002c86565b915060408401356200317b8162002c86565b809150509250925092565b6000602082840312156200319957600080fd5b5035919050565b600080600080600080600060a0888a031215620031bc57600080fd5b620031c78862002cae565b96506020880135620031d98162002c86565b9550604088013567ffffffffffffffff80821115620031f757600080fd5b620032058b838c0162002cc3565b909750955060608a01359150808211156200321f57600080fd5b506200322e8a828b0162002cc3565b9094509250506080880135620032448162002f2e565b8091505092959891949750929550565b6000806000606084860312156200326a57600080fd5b620032758462002cae565b92506020840135620032878162002c86565b9150604084013567ffffffffffffffff811115620032a457600080fd5b620032b28682870162002ff3565b9150509250925092565b801515811462001c7b57600080fd5b600060208284031215620032de57600080fd5b815162002ae181620032bc565b60005b8381101562003308578181015183820152602001620032ee565b83811115620012585750506000910152565b600082601f8301126200332c57600080fd5b81516200333d620030168262002fc8565b8181528460208386010111156200335357600080fd5b62003366826020830160208701620032eb565b949350505050565b6000602082840312156200338157600080fd5b815167ffffffffffffffff8111156200339957600080fd5b62003366848285016200331a565b600060208284031215620033ba57600080fd5b815162002ae18162002f2e565b60008151808452620033e1816020860160208601620032eb565b601f01601f19169290920160200192915050565b6060815260006200340a6060830186620033c7565b82810360208401526200341e8186620033c7565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c08501526200348582850187620033c7565b925080851660e085015250509998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082620034f257620034f2620034b4565b500490565b6000600182016200350c576200350c620034ca565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620035436060830184620033c7565b95945050505050565b6000825162003560818460208701620032eb565b9190910192915050565b6000806000606084860312156200358057600080fd5b835167ffffffffffffffff808211156200359957600080fd5b620035a7878388016200331a565b94506020860151915080821115620035be57600080fd5b50620035cd868287016200331a565b92505060408401516200317b8162002f2e565b600082620035f257620035f2620034b4565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062003636606083018789620035f7565b82810360208401526200364b818688620035f7565b91505060ff831660408301529695505050505050565b6000835162003675818460208801620032eb565b8351908301906200368b818360208801620032eb565b01949350505050565b60008085851115620036a557600080fd5b83861115620036b357600080fd5b5050820193919092039150565b600080600080600080600060e0888a031215620036dc57600080fd5b8735620036e98162002c86565b96506020880135620036fb8162002c86565b95506040880135945060608801359350608088013562002fab8162002f2e565b600080600080600080600080610100898b0312156200373957600080fd5b8835620037468162002c86565b97506020890135620037588162002c86565b9650604089013595506060890135945060808901356200377881620032bc565b935060a08901356200378a8162002f2e565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620037e8578160001904821115620037cc57620037cc620034ca565b80851615620037da57918102915b93841c9390800290620037ac565b509250929050565b600082620038015750600162000bf3565b81620038105750600062000bf3565b8160018114620038295760028114620038345762003854565b600191505062000bf3565b60ff841115620038485762003848620034ca565b50506001821b62000bf3565b5060208310610133831016604e8410600b841016171562003879575081810a62000bf3565b620038858383620037a7565b80600019048211156200389c576200389c620034ca565b029392505050565b600062002ae18383620037f0565b600082821015620038c757620038c7620034ca565b500390565b60008219821115620038e257620038e2620034ca565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200391057600080fd5b5051919050565b60208152600062002ae16020830184620033c756fe60c06040523480156200001157600080fd5b50604051620017b2380380620017b28339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516112f8620004ba60003960006104e001526000818161034801526104aa01526112f86000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461036a578063dd62ed3e1461037f578063ffa1ad74146103b857600080fd5b8063a457c2d71461031d578063a9059cbb14610330578063cd0d00961461034357600080fd5b806395d89b41116100bd57806395d89b41146102d75780639dc29fac146102df578063a3c573eb146102f257600080fd5b806370a082311461028e5780637ecebe00146102b757600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103d8565b604051610191919061108b565b60405180910390f35b6101ad6101a83660046110fc565b61046a565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611126565b610482565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104a6565b6101ad6102763660046110fc565b610502565b6101ad6102893660046110fc565b610541565b6101c161029c366004611162565b6001600160a01b031660009081526020819052604090205490565b6101c16102c5366004611162565b60066020526000908152604090205481565b6101846105c2565b6101ad6102ed3660046110fc565b6105d1565b600554610305906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ad61032b3660046110fc565b610644565b6101ad61033e3660046110fc565b6106ee565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61037d610378366004611184565b6106fc565b005b6101c161038d3660046111f7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103e79061122a565b80601f01602080910402602001604051908101604052809291908181526020018280546104139061122a565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b600033610478818585610981565b5060019392505050565b600033610490858285610ada565b61049b858585610b6c565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104dd576104d846610d83565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610478908290869061053c90879061127a565b610981565b6005546000906001600160a01b031633146105af5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f42526044820152634944474560e01b60648201526084015b60405180910390fd5b6105b98383610e2f565b50600192915050565b6060600480546103e79061122a565b6005546000906001600160a01b0316331461063a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f42526044820152634944474560e01b60648201526084016105a6565b6105b98383610f0e565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156106e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105a6565b61049b8286868403610981565b600033610478818585610b6c565b834211156107715760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866107be83611292565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061081c6104a6565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156108c2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906108f85750896001600160a01b0316816001600160a01b0316145b61096a5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105a6565b6109758a8a8a610981565b50505050505050505050565b6001600160a01b0383166109fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038216610a785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b665781811015610b595760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a6565b610b668484848403610981565b50505050565b6001600160a01b038316610be85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038216610c645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b03831660009081526020819052604090205481811015610cf35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d2a90849061127a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7691815260200190565b60405180910390a3610b66565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610dae6103d8565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610e855760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105a6565b8060026000828254610e97919061127a565b90915550506001600160a01b03821660009081526020819052604081208054839290610ec490849061127a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f8a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b038216600090815260208190526040902054818110156110195760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a6565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110489084906112ab565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610acd565b600060208083528351808285015260005b818110156110b85785810183015185820160400152820161109c565b818111156110ca576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146110f757600080fd5b919050565b6000806040838503121561110f57600080fd5b611118836110e0565b946020939093013593505050565b60008060006060848603121561113b57600080fd5b611144846110e0565b9250611152602085016110e0565b9150604084013590509250925092565b60006020828403121561117457600080fd5b61117d826110e0565b9392505050565b600080600080600080600060e0888a03121561119f57600080fd5b6111a8886110e0565b96506111b6602089016110e0565b95506040880135945060608801359350608088013560ff811681146111da57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561120a57600080fd5b611213836110e0565b9150611221602084016110e0565b90509250929050565b600181811c9082168061123e57607f821691505b60208210810361125e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561128d5761128d611264565b500190565b6000600182016112a4576112a4611264565b5060010190565b6000828210156112bd576112bd611264565b50039056fea2646970667358221220e92796a67a51f68b4e38bef4ca270c512835dbbbc94c239fbee097e6ae35764364736f6c634300080f0033a26469706673582212203f16f0e9de29ee165e359296bc9d758bfeae7c0bda29ccb9d1feb0c48db2d21464736f6c634300080f0033", -} - -// BridgeABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeMetaData.ABI instead. -var BridgeABI = BridgeMetaData.ABI - -// BridgeBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use BridgeMetaData.Bin instead. -var BridgeBin = BridgeMetaData.Bin - -// DeployBridge deploys a new Ethereum contract, binding an instance of Bridge to it. -func DeployBridge(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Bridge, error) { - parsed, err := BridgeMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Bridge{BridgeCaller: BridgeCaller{contract: contract}, BridgeTransactor: BridgeTransactor{contract: contract}, BridgeFilterer: BridgeFilterer{contract: contract}}, nil -} - -// Bridge is an auto generated Go binding around an Ethereum contract. -type Bridge struct { - BridgeCaller // Read-only binding to the contract - BridgeTransactor // Write-only binding to the contract - BridgeFilterer // Log filterer for contract events -} - -// BridgeCaller is an auto generated read-only Go binding around an Ethereum contract. -type BridgeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTransactor is an auto generated write-only Go binding around an Ethereum contract. -type BridgeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type BridgeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type BridgeSession struct { - Contract *Bridge // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BridgeCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type BridgeCallerSession struct { - Contract *BridgeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// BridgeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type BridgeTransactorSession struct { - Contract *BridgeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BridgeRaw is an auto generated low-level Go binding around an Ethereum contract. -type BridgeRaw struct { - Contract *Bridge // Generic contract binding to access the raw methods on -} - -// BridgeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type BridgeCallerRaw struct { - Contract *BridgeCaller // Generic read-only contract binding to access the raw methods on -} - -// BridgeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type BridgeTransactorRaw struct { - Contract *BridgeTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewBridge creates a new instance of Bridge, bound to a specific deployed contract. -func NewBridge(address common.Address, backend bind.ContractBackend) (*Bridge, error) { - contract, err := bindBridge(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Bridge{BridgeCaller: BridgeCaller{contract: contract}, BridgeTransactor: BridgeTransactor{contract: contract}, BridgeFilterer: BridgeFilterer{contract: contract}}, nil -} - -// NewBridgeCaller creates a new read-only instance of Bridge, bound to a specific deployed contract. -func NewBridgeCaller(address common.Address, caller bind.ContractCaller) (*BridgeCaller, error) { - contract, err := bindBridge(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BridgeCaller{contract: contract}, nil -} - -// NewBridgeTransactor creates a new write-only instance of Bridge, bound to a specific deployed contract. -func NewBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransactor, error) { - contract, err := bindBridge(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeTransactor{contract: contract}, nil -} - -// NewBridgeFilterer creates a new log filterer instance of Bridge, bound to a specific deployed contract. -func NewBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeFilterer, error) { - contract, err := bindBridge(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeFilterer{contract: contract}, nil -} - -// bindBridge binds a generic wrapper to an already deployed contract. -func bindBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(BridgeABI)) - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Bridge *BridgeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Bridge.Contract.BridgeCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Bridge *BridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Bridge.Contract.BridgeTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Bridge *BridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Bridge.Contract.BridgeTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Bridge *BridgeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Bridge.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Bridge *BridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Bridge.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Bridge *BridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Bridge.Contract.contract.Transact(opts, method, params...) -} - -// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. -// -// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) -func (_Bridge *BridgeCaller) LEAFTYPEASSET(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "LEAF_TYPE_ASSET") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. -// -// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) -func (_Bridge *BridgeSession) LEAFTYPEASSET() (uint8, error) { - return _Bridge.Contract.LEAFTYPEASSET(&_Bridge.CallOpts) -} - -// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. -// -// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) -func (_Bridge *BridgeCallerSession) LEAFTYPEASSET() (uint8, error) { - return _Bridge.Contract.LEAFTYPEASSET(&_Bridge.CallOpts) -} - -// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. -// -// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) -func (_Bridge *BridgeCaller) LEAFTYPEMESSAGE(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "LEAF_TYPE_MESSAGE") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. -// -// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) -func (_Bridge *BridgeSession) LEAFTYPEMESSAGE() (uint8, error) { - return _Bridge.Contract.LEAFTYPEMESSAGE(&_Bridge.CallOpts) -} - -// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. -// -// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) -func (_Bridge *BridgeCallerSession) LEAFTYPEMESSAGE() (uint8, error) { - return _Bridge.Contract.LEAFTYPEMESSAGE(&_Bridge.CallOpts) -} - -// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. -// -// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) -func (_Bridge *BridgeCaller) MAINNETNETWORKID(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "MAINNET_NETWORK_ID") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. -// -// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) -func (_Bridge *BridgeSession) MAINNETNETWORKID() (uint32, error) { - return _Bridge.Contract.MAINNETNETWORKID(&_Bridge.CallOpts) -} - -// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. -// -// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) -func (_Bridge *BridgeCallerSession) MAINNETNETWORKID() (uint32, error) { - return _Bridge.Contract.MAINNETNETWORKID(&_Bridge.CallOpts) -} - -// ClaimedBitMap is a free data retrieval call binding the contract method 0xee25560b. -// -// Solidity: function claimedBitMap(uint256 ) view returns(uint256) -func (_Bridge *BridgeCaller) ClaimedBitMap(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "claimedBitMap", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// ClaimedBitMap is a free data retrieval call binding the contract method 0xee25560b. -// -// Solidity: function claimedBitMap(uint256 ) view returns(uint256) -func (_Bridge *BridgeSession) ClaimedBitMap(arg0 *big.Int) (*big.Int, error) { - return _Bridge.Contract.ClaimedBitMap(&_Bridge.CallOpts, arg0) -} - -// ClaimedBitMap is a free data retrieval call binding the contract method 0xee25560b. -// -// Solidity: function claimedBitMap(uint256 ) view returns(uint256) -func (_Bridge *BridgeCallerSession) ClaimedBitMap(arg0 *big.Int) (*big.Int, error) { - return _Bridge.Contract.ClaimedBitMap(&_Bridge.CallOpts, arg0) -} - -// DepositCount is a free data retrieval call binding the contract method 0x2dfdf0b5. -// -// Solidity: function depositCount() view returns(uint256) -func (_Bridge *BridgeCaller) DepositCount(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "depositCount") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// DepositCount is a free data retrieval call binding the contract method 0x2dfdf0b5. -// -// Solidity: function depositCount() view returns(uint256) -func (_Bridge *BridgeSession) DepositCount() (*big.Int, error) { - return _Bridge.Contract.DepositCount(&_Bridge.CallOpts) -} - -// DepositCount is a free data retrieval call binding the contract method 0x2dfdf0b5. -// -// Solidity: function depositCount() view returns(uint256) -func (_Bridge *BridgeCallerSession) DepositCount() (*big.Int, error) { - return _Bridge.Contract.DepositCount(&_Bridge.CallOpts) -} - -// GetDepositRoot is a free data retrieval call binding the contract method 0x3ae05047. -// -// Solidity: function getDepositRoot() view returns(bytes32) -func (_Bridge *BridgeCaller) GetDepositRoot(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "getDepositRoot") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetDepositRoot is a free data retrieval call binding the contract method 0x3ae05047. -// -// Solidity: function getDepositRoot() view returns(bytes32) -func (_Bridge *BridgeSession) GetDepositRoot() ([32]byte, error) { - return _Bridge.Contract.GetDepositRoot(&_Bridge.CallOpts) -} - -// GetDepositRoot is a free data retrieval call binding the contract method 0x3ae05047. -// -// Solidity: function getDepositRoot() view returns(bytes32) -func (_Bridge *BridgeCallerSession) GetDepositRoot() ([32]byte, error) { - return _Bridge.Contract.GetDepositRoot(&_Bridge.CallOpts) -} - -// GetLeafValue is a free data retrieval call binding the contract method 0x3e197043. -// -// Solidity: function getLeafValue(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes32 metadataHash) pure returns(bytes32) -func (_Bridge *BridgeCaller) GetLeafValue(opts *bind.CallOpts, leafType uint8, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadataHash [32]byte) ([32]byte, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "getLeafValue", leafType, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadataHash) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetLeafValue is a free data retrieval call binding the contract method 0x3e197043. -// -// Solidity: function getLeafValue(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes32 metadataHash) pure returns(bytes32) -func (_Bridge *BridgeSession) GetLeafValue(leafType uint8, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadataHash [32]byte) ([32]byte, error) { - return _Bridge.Contract.GetLeafValue(&_Bridge.CallOpts, leafType, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadataHash) -} - -// GetLeafValue is a free data retrieval call binding the contract method 0x3e197043. -// -// Solidity: function getLeafValue(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes32 metadataHash) pure returns(bytes32) -func (_Bridge *BridgeCallerSession) GetLeafValue(leafType uint8, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadataHash [32]byte) ([32]byte, error) { - return _Bridge.Contract.GetLeafValue(&_Bridge.CallOpts, leafType, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadataHash) -} - -// GetTokenWrappedAddress is a free data retrieval call binding the contract method 0x22e95f2c. -// -// Solidity: function getTokenWrappedAddress(uint32 originNetwork, address originTokenAddress) view returns(address) -func (_Bridge *BridgeCaller) GetTokenWrappedAddress(opts *bind.CallOpts, originNetwork uint32, originTokenAddress common.Address) (common.Address, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "getTokenWrappedAddress", originNetwork, originTokenAddress) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetTokenWrappedAddress is a free data retrieval call binding the contract method 0x22e95f2c. -// -// Solidity: function getTokenWrappedAddress(uint32 originNetwork, address originTokenAddress) view returns(address) -func (_Bridge *BridgeSession) GetTokenWrappedAddress(originNetwork uint32, originTokenAddress common.Address) (common.Address, error) { - return _Bridge.Contract.GetTokenWrappedAddress(&_Bridge.CallOpts, originNetwork, originTokenAddress) -} - -// GetTokenWrappedAddress is a free data retrieval call binding the contract method 0x22e95f2c. -// -// Solidity: function getTokenWrappedAddress(uint32 originNetwork, address originTokenAddress) view returns(address) -func (_Bridge *BridgeCallerSession) GetTokenWrappedAddress(originNetwork uint32, originTokenAddress common.Address) (common.Address, error) { - return _Bridge.Contract.GetTokenWrappedAddress(&_Bridge.CallOpts, originNetwork, originTokenAddress) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Bridge *BridgeCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "globalExitRootManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Bridge *BridgeSession) GlobalExitRootManager() (common.Address, error) { - return _Bridge.Contract.GlobalExitRootManager(&_Bridge.CallOpts) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Bridge *BridgeCallerSession) GlobalExitRootManager() (common.Address, error) { - return _Bridge.Contract.GlobalExitRootManager(&_Bridge.CallOpts) -} - -// IsClaimed is a free data retrieval call binding the contract method 0x9e34070f. -// -// Solidity: function isClaimed(uint256 index) view returns(bool) -func (_Bridge *BridgeCaller) IsClaimed(opts *bind.CallOpts, index *big.Int) (bool, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isClaimed", index) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsClaimed is a free data retrieval call binding the contract method 0x9e34070f. -// -// Solidity: function isClaimed(uint256 index) view returns(bool) -func (_Bridge *BridgeSession) IsClaimed(index *big.Int) (bool, error) { - return _Bridge.Contract.IsClaimed(&_Bridge.CallOpts, index) -} - -// IsClaimed is a free data retrieval call binding the contract method 0x9e34070f. -// -// Solidity: function isClaimed(uint256 index) view returns(bool) -func (_Bridge *BridgeCallerSession) IsClaimed(index *big.Int) (bool, error) { - return _Bridge.Contract.IsClaimed(&_Bridge.CallOpts, index) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Bridge *BridgeCaller) IsEmergencyState(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isEmergencyState") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Bridge *BridgeSession) IsEmergencyState() (bool, error) { - return _Bridge.Contract.IsEmergencyState(&_Bridge.CallOpts) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Bridge *BridgeCallerSession) IsEmergencyState() (bool, error) { - return _Bridge.Contract.IsEmergencyState(&_Bridge.CallOpts) -} - -// NetworkID is a free data retrieval call binding the contract method 0xbab161bf. -// -// Solidity: function networkID() view returns(uint32) -func (_Bridge *BridgeCaller) NetworkID(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "networkID") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// NetworkID is a free data retrieval call binding the contract method 0xbab161bf. -// -// Solidity: function networkID() view returns(uint32) -func (_Bridge *BridgeSession) NetworkID() (uint32, error) { - return _Bridge.Contract.NetworkID(&_Bridge.CallOpts) -} - -// NetworkID is a free data retrieval call binding the contract method 0xbab161bf. -// -// Solidity: function networkID() view returns(uint32) -func (_Bridge *BridgeCallerSession) NetworkID() (uint32, error) { - return _Bridge.Contract.NetworkID(&_Bridge.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeSession) Owner() (common.Address, error) { - return _Bridge.Contract.Owner(&_Bridge.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) { - return _Bridge.Contract.Owner(&_Bridge.CallOpts) -} - -// PoeAddress is a free data retrieval call binding the contract method 0x8f611519. -// -// Solidity: function poeAddress() view returns(address) -func (_Bridge *BridgeCaller) PoeAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "poeAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PoeAddress is a free data retrieval call binding the contract method 0x8f611519. -// -// Solidity: function poeAddress() view returns(address) -func (_Bridge *BridgeSession) PoeAddress() (common.Address, error) { - return _Bridge.Contract.PoeAddress(&_Bridge.CallOpts) -} - -// PoeAddress is a free data retrieval call binding the contract method 0x8f611519. -// -// Solidity: function poeAddress() view returns(address) -func (_Bridge *BridgeCallerSession) PoeAddress() (common.Address, error) { - return _Bridge.Contract.PoeAddress(&_Bridge.CallOpts) -} - -// PrecalculatedWrapperAddress is a free data retrieval call binding the contract method 0xaaa13cc2. -// -// Solidity: function precalculatedWrapperAddress(uint32 originNetwork, address originTokenAddress, string name, string symbol, uint8 decimals) view returns(address) -func (_Bridge *BridgeCaller) PrecalculatedWrapperAddress(opts *bind.CallOpts, originNetwork uint32, originTokenAddress common.Address, name string, symbol string, decimals uint8) (common.Address, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "precalculatedWrapperAddress", originNetwork, originTokenAddress, name, symbol, decimals) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PrecalculatedWrapperAddress is a free data retrieval call binding the contract method 0xaaa13cc2. -// -// Solidity: function precalculatedWrapperAddress(uint32 originNetwork, address originTokenAddress, string name, string symbol, uint8 decimals) view returns(address) -func (_Bridge *BridgeSession) PrecalculatedWrapperAddress(originNetwork uint32, originTokenAddress common.Address, name string, symbol string, decimals uint8) (common.Address, error) { - return _Bridge.Contract.PrecalculatedWrapperAddress(&_Bridge.CallOpts, originNetwork, originTokenAddress, name, symbol, decimals) -} - -// PrecalculatedWrapperAddress is a free data retrieval call binding the contract method 0xaaa13cc2. -// -// Solidity: function precalculatedWrapperAddress(uint32 originNetwork, address originTokenAddress, string name, string symbol, uint8 decimals) view returns(address) -func (_Bridge *BridgeCallerSession) PrecalculatedWrapperAddress(originNetwork uint32, originTokenAddress common.Address, name string, symbol string, decimals uint8) (common.Address, error) { - return _Bridge.Contract.PrecalculatedWrapperAddress(&_Bridge.CallOpts, originNetwork, originTokenAddress, name, symbol, decimals) -} - -// TokenInfoToWrappedToken is a free data retrieval call binding the contract method 0x81b1c174. -// -// Solidity: function tokenInfoToWrappedToken(bytes32 ) view returns(address) -func (_Bridge *BridgeCaller) TokenInfoToWrappedToken(opts *bind.CallOpts, arg0 [32]byte) (common.Address, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "tokenInfoToWrappedToken", arg0) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TokenInfoToWrappedToken is a free data retrieval call binding the contract method 0x81b1c174. -// -// Solidity: function tokenInfoToWrappedToken(bytes32 ) view returns(address) -func (_Bridge *BridgeSession) TokenInfoToWrappedToken(arg0 [32]byte) (common.Address, error) { - return _Bridge.Contract.TokenInfoToWrappedToken(&_Bridge.CallOpts, arg0) -} - -// TokenInfoToWrappedToken is a free data retrieval call binding the contract method 0x81b1c174. -// -// Solidity: function tokenInfoToWrappedToken(bytes32 ) view returns(address) -func (_Bridge *BridgeCallerSession) TokenInfoToWrappedToken(arg0 [32]byte) (common.Address, error) { - return _Bridge.Contract.TokenInfoToWrappedToken(&_Bridge.CallOpts, arg0) -} - -// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. -// -// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) -func (_Bridge *BridgeCaller) VerifyMerkleProof(opts *bind.CallOpts, leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "verifyMerkleProof", leafHash, smtProof, index, root) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. -// -// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) -func (_Bridge *BridgeSession) VerifyMerkleProof(leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { - return _Bridge.Contract.VerifyMerkleProof(&_Bridge.CallOpts, leafHash, smtProof, index, root) -} - -// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. -// -// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) -func (_Bridge *BridgeCallerSession) VerifyMerkleProof(leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { - return _Bridge.Contract.VerifyMerkleProof(&_Bridge.CallOpts, leafHash, smtProof, index, root) -} - -// WrappedTokenToTokenInfo is a free data retrieval call binding the contract method 0x318aee3d. -// -// Solidity: function wrappedTokenToTokenInfo(address ) view returns(uint32 originNetwork, address originTokenAddress) -func (_Bridge *BridgeCaller) WrappedTokenToTokenInfo(opts *bind.CallOpts, arg0 common.Address) (struct { - OriginNetwork uint32 - OriginTokenAddress common.Address -}, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "wrappedTokenToTokenInfo", arg0) - - outstruct := new(struct { - OriginNetwork uint32 - OriginTokenAddress common.Address - }) - if err != nil { - return *outstruct, err - } - - outstruct.OriginNetwork = *abi.ConvertType(out[0], new(uint32)).(*uint32) - outstruct.OriginTokenAddress = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) - - return *outstruct, err - -} - -// WrappedTokenToTokenInfo is a free data retrieval call binding the contract method 0x318aee3d. -// -// Solidity: function wrappedTokenToTokenInfo(address ) view returns(uint32 originNetwork, address originTokenAddress) -func (_Bridge *BridgeSession) WrappedTokenToTokenInfo(arg0 common.Address) (struct { - OriginNetwork uint32 - OriginTokenAddress common.Address -}, error) { - return _Bridge.Contract.WrappedTokenToTokenInfo(&_Bridge.CallOpts, arg0) -} - -// WrappedTokenToTokenInfo is a free data retrieval call binding the contract method 0x318aee3d. -// -// Solidity: function wrappedTokenToTokenInfo(address ) view returns(uint32 originNetwork, address originTokenAddress) -func (_Bridge *BridgeCallerSession) WrappedTokenToTokenInfo(arg0 common.Address) (struct { - OriginNetwork uint32 - OriginTokenAddress common.Address -}, error) { - return _Bridge.Contract.WrappedTokenToTokenInfo(&_Bridge.CallOpts, arg0) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. -// -// Solidity: function activateEmergencyState() returns() -func (_Bridge *BridgeTransactor) ActivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "activateEmergencyState") -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. -// -// Solidity: function activateEmergencyState() returns() -func (_Bridge *BridgeSession) ActivateEmergencyState() (*types.Transaction, error) { - return _Bridge.Contract.ActivateEmergencyState(&_Bridge.TransactOpts) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. -// -// Solidity: function activateEmergencyState() returns() -func (_Bridge *BridgeTransactorSession) ActivateEmergencyState() (*types.Transaction, error) { - return _Bridge.Contract.ActivateEmergencyState(&_Bridge.TransactOpts) -} - -// BridgeAsset is a paid mutator transaction binding the contract method 0x0871e971. -// -// Solidity: function bridgeAsset(address token, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes permitData) payable returns() -func (_Bridge *BridgeTransactor) BridgeAsset(opts *bind.TransactOpts, token common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, permitData []byte) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "bridgeAsset", token, destinationNetwork, destinationAddress, amount, permitData) -} - -// BridgeAsset is a paid mutator transaction binding the contract method 0x0871e971. -// -// Solidity: function bridgeAsset(address token, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes permitData) payable returns() -func (_Bridge *BridgeSession) BridgeAsset(token common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, permitData []byte) (*types.Transaction, error) { - return _Bridge.Contract.BridgeAsset(&_Bridge.TransactOpts, token, destinationNetwork, destinationAddress, amount, permitData) -} - -// BridgeAsset is a paid mutator transaction binding the contract method 0x0871e971. -// -// Solidity: function bridgeAsset(address token, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes permitData) payable returns() -func (_Bridge *BridgeTransactorSession) BridgeAsset(token common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, permitData []byte) (*types.Transaction, error) { - return _Bridge.Contract.BridgeAsset(&_Bridge.TransactOpts, token, destinationNetwork, destinationAddress, amount, permitData) -} - -// BridgeMessage is a paid mutator transaction binding the contract method 0xd96a15f7. -// -// Solidity: function bridgeMessage(uint32 destinationNetwork, address destinationAddress, bytes metadata) payable returns() -func (_Bridge *BridgeTransactor) BridgeMessage(opts *bind.TransactOpts, destinationNetwork uint32, destinationAddress common.Address, metadata []byte) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "bridgeMessage", destinationNetwork, destinationAddress, metadata) -} - -// BridgeMessage is a paid mutator transaction binding the contract method 0xd96a15f7. -// -// Solidity: function bridgeMessage(uint32 destinationNetwork, address destinationAddress, bytes metadata) payable returns() -func (_Bridge *BridgeSession) BridgeMessage(destinationNetwork uint32, destinationAddress common.Address, metadata []byte) (*types.Transaction, error) { - return _Bridge.Contract.BridgeMessage(&_Bridge.TransactOpts, destinationNetwork, destinationAddress, metadata) -} - -// BridgeMessage is a paid mutator transaction binding the contract method 0xd96a15f7. -// -// Solidity: function bridgeMessage(uint32 destinationNetwork, address destinationAddress, bytes metadata) payable returns() -func (_Bridge *BridgeTransactorSession) BridgeMessage(destinationNetwork uint32, destinationAddress common.Address, metadata []byte) (*types.Transaction, error) { - return _Bridge.Contract.BridgeMessage(&_Bridge.TransactOpts, destinationNetwork, destinationAddress, metadata) -} - -// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. -// -// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Bridge *BridgeTransactor) ClaimAsset(opts *bind.TransactOpts, smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "claimAsset", smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) -} - -// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. -// -// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Bridge *BridgeSession) ClaimAsset(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { - return _Bridge.Contract.ClaimAsset(&_Bridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) -} - -// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. -// -// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Bridge *BridgeTransactorSession) ClaimAsset(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { - return _Bridge.Contract.ClaimAsset(&_Bridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) -} - -// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. -// -// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Bridge *BridgeTransactor) ClaimMessage(opts *bind.TransactOpts, smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "claimMessage", smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) -} - -// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. -// -// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Bridge *BridgeSession) ClaimMessage(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { - return _Bridge.Contract.ClaimMessage(&_Bridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) -} - -// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. -// -// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Bridge *BridgeTransactorSession) ClaimMessage(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { - return _Bridge.Contract.ClaimMessage(&_Bridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Bridge *BridgeTransactor) DeactivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "deactivateEmergencyState") -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Bridge *BridgeSession) DeactivateEmergencyState() (*types.Transaction, error) { - return _Bridge.Contract.DeactivateEmergencyState(&_Bridge.TransactOpts) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Bridge *BridgeTransactorSession) DeactivateEmergencyState() (*types.Transaction, error) { - return _Bridge.Contract.DeactivateEmergencyState(&_Bridge.TransactOpts) -} - -// Initialize is a paid mutator transaction binding the contract method 0x647c576c. -// -// Solidity: function initialize(uint32 _networkID, address _globalExitRootManager, address _poeAddress) returns() -func (_Bridge *BridgeTransactor) Initialize(opts *bind.TransactOpts, _networkID uint32, _globalExitRootManager common.Address, _poeAddress common.Address) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "initialize", _networkID, _globalExitRootManager, _poeAddress) -} - -// Initialize is a paid mutator transaction binding the contract method 0x647c576c. -// -// Solidity: function initialize(uint32 _networkID, address _globalExitRootManager, address _poeAddress) returns() -func (_Bridge *BridgeSession) Initialize(_networkID uint32, _globalExitRootManager common.Address, _poeAddress common.Address) (*types.Transaction, error) { - return _Bridge.Contract.Initialize(&_Bridge.TransactOpts, _networkID, _globalExitRootManager, _poeAddress) -} - -// Initialize is a paid mutator transaction binding the contract method 0x647c576c. -// -// Solidity: function initialize(uint32 _networkID, address _globalExitRootManager, address _poeAddress) returns() -func (_Bridge *BridgeTransactorSession) Initialize(_networkID uint32, _globalExitRootManager common.Address, _poeAddress common.Address) (*types.Transaction, error) { - return _Bridge.Contract.Initialize(&_Bridge.TransactOpts, _networkID, _globalExitRootManager, _poeAddress) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Bridge *BridgeTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Bridge *BridgeSession) RenounceOwnership() (*types.Transaction, error) { - return _Bridge.Contract.RenounceOwnership(&_Bridge.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Bridge *BridgeTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Bridge.Contract.RenounceOwnership(&_Bridge.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Bridge *BridgeTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Bridge *BridgeSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Bridge.Contract.TransferOwnership(&_Bridge.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Bridge *BridgeTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Bridge.Contract.TransferOwnership(&_Bridge.TransactOpts, newOwner) -} - -// BridgeBridgeEventIterator is returned from FilterBridgeEvent and is used to iterate over the raw logs and unpacked data for BridgeEvent events raised by the Bridge contract. -type BridgeBridgeEventIterator struct { - Event *BridgeBridgeEvent // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeBridgeEventIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeBridgeEvent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeBridgeEvent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeBridgeEventIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeBridgeEventIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeBridgeEvent represents a BridgeEvent event raised by the Bridge contract. -type BridgeBridgeEvent struct { - LeafType uint8 - OriginNetwork uint32 - OriginAddress common.Address - DestinationNetwork uint32 - DestinationAddress common.Address - Amount *big.Int - Metadata []byte - DepositCount uint32 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBridgeEvent is a free log retrieval operation binding the contract event 0x501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b. -// -// Solidity: event BridgeEvent(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata, uint32 depositCount) -func (_Bridge *BridgeFilterer) FilterBridgeEvent(opts *bind.FilterOpts) (*BridgeBridgeEventIterator, error) { - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "BridgeEvent") - if err != nil { - return nil, err - } - return &BridgeBridgeEventIterator{contract: _Bridge.contract, event: "BridgeEvent", logs: logs, sub: sub}, nil -} - -// WatchBridgeEvent is a free log subscription operation binding the contract event 0x501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b. -// -// Solidity: event BridgeEvent(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata, uint32 depositCount) -func (_Bridge *BridgeFilterer) WatchBridgeEvent(opts *bind.WatchOpts, sink chan<- *BridgeBridgeEvent) (event.Subscription, error) { - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "BridgeEvent") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeBridgeEvent) - if err := _Bridge.contract.UnpackLog(event, "BridgeEvent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBridgeEvent is a log parse operation binding the contract event 0x501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b. -// -// Solidity: event BridgeEvent(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata, uint32 depositCount) -func (_Bridge *BridgeFilterer) ParseBridgeEvent(log types.Log) (*BridgeBridgeEvent, error) { - event := new(BridgeBridgeEvent) - if err := _Bridge.contract.UnpackLog(event, "BridgeEvent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeClaimEventIterator is returned from FilterClaimEvent and is used to iterate over the raw logs and unpacked data for ClaimEvent events raised by the Bridge contract. -type BridgeClaimEventIterator struct { - Event *BridgeClaimEvent // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeClaimEventIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeClaimEvent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeClaimEvent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeClaimEventIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeClaimEventIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeClaimEvent represents a ClaimEvent event raised by the Bridge contract. -type BridgeClaimEvent struct { - Index uint32 - OriginNetwork uint32 - OriginAddress common.Address - DestinationAddress common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterClaimEvent is a free log retrieval operation binding the contract event 0x25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe27545983. -// -// Solidity: event ClaimEvent(uint32 index, uint32 originNetwork, address originAddress, address destinationAddress, uint256 amount) -func (_Bridge *BridgeFilterer) FilterClaimEvent(opts *bind.FilterOpts) (*BridgeClaimEventIterator, error) { - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "ClaimEvent") - if err != nil { - return nil, err - } - return &BridgeClaimEventIterator{contract: _Bridge.contract, event: "ClaimEvent", logs: logs, sub: sub}, nil -} - -// WatchClaimEvent is a free log subscription operation binding the contract event 0x25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe27545983. -// -// Solidity: event ClaimEvent(uint32 index, uint32 originNetwork, address originAddress, address destinationAddress, uint256 amount) -func (_Bridge *BridgeFilterer) WatchClaimEvent(opts *bind.WatchOpts, sink chan<- *BridgeClaimEvent) (event.Subscription, error) { - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "ClaimEvent") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeClaimEvent) - if err := _Bridge.contract.UnpackLog(event, "ClaimEvent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseClaimEvent is a log parse operation binding the contract event 0x25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe27545983. -// -// Solidity: event ClaimEvent(uint32 index, uint32 originNetwork, address originAddress, address destinationAddress, uint256 amount) -func (_Bridge *BridgeFilterer) ParseClaimEvent(log types.Log) (*BridgeClaimEvent, error) { - event := new(BridgeClaimEvent) - if err := _Bridge.contract.UnpackLog(event, "ClaimEvent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeEmergencyStateActivatedIterator is returned from FilterEmergencyStateActivated and is used to iterate over the raw logs and unpacked data for EmergencyStateActivated events raised by the Bridge contract. -type BridgeEmergencyStateActivatedIterator struct { - Event *BridgeEmergencyStateActivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeEmergencyStateActivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeEmergencyStateActivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeEmergencyStateActivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeEmergencyStateActivated represents a EmergencyStateActivated event raised by the Bridge contract. -type BridgeEmergencyStateActivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateActivated is a free log retrieval operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Bridge *BridgeFilterer) FilterEmergencyStateActivated(opts *bind.FilterOpts) (*BridgeEmergencyStateActivatedIterator, error) { - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return &BridgeEmergencyStateActivatedIterator{contract: _Bridge.contract, event: "EmergencyStateActivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateActivated is a free log subscription operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Bridge *BridgeFilterer) WatchEmergencyStateActivated(opts *bind.WatchOpts, sink chan<- *BridgeEmergencyStateActivated) (event.Subscription, error) { - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeEmergencyStateActivated) - if err := _Bridge.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateActivated is a log parse operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Bridge *BridgeFilterer) ParseEmergencyStateActivated(log types.Log) (*BridgeEmergencyStateActivated, error) { - event := new(BridgeEmergencyStateActivated) - if err := _Bridge.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeEmergencyStateDeactivatedIterator is returned from FilterEmergencyStateDeactivated and is used to iterate over the raw logs and unpacked data for EmergencyStateDeactivated events raised by the Bridge contract. -type BridgeEmergencyStateDeactivatedIterator struct { - Event *BridgeEmergencyStateDeactivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeEmergencyStateDeactivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeEmergencyStateDeactivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeEmergencyStateDeactivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeEmergencyStateDeactivated represents a EmergencyStateDeactivated event raised by the Bridge contract. -type BridgeEmergencyStateDeactivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateDeactivated is a free log retrieval operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Bridge *BridgeFilterer) FilterEmergencyStateDeactivated(opts *bind.FilterOpts) (*BridgeEmergencyStateDeactivatedIterator, error) { - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return &BridgeEmergencyStateDeactivatedIterator{contract: _Bridge.contract, event: "EmergencyStateDeactivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateDeactivated is a free log subscription operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Bridge *BridgeFilterer) WatchEmergencyStateDeactivated(opts *bind.WatchOpts, sink chan<- *BridgeEmergencyStateDeactivated) (event.Subscription, error) { - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeEmergencyStateDeactivated) - if err := _Bridge.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateDeactivated is a log parse operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Bridge *BridgeFilterer) ParseEmergencyStateDeactivated(log types.Log) (*BridgeEmergencyStateDeactivated, error) { - event := new(BridgeEmergencyStateDeactivated) - if err := _Bridge.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Bridge contract. -type BridgeInitializedIterator struct { - Event *BridgeInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeInitialized represents a Initialized event raised by the Bridge contract. -type BridgeInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Bridge *BridgeFilterer) FilterInitialized(opts *bind.FilterOpts) (*BridgeInitializedIterator, error) { - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &BridgeInitializedIterator{contract: _Bridge.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Bridge *BridgeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *BridgeInitialized) (event.Subscription, error) { - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeInitialized) - if err := _Bridge.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Bridge *BridgeFilterer) ParseInitialized(log types.Log) (*BridgeInitialized, error) { - event := new(BridgeInitialized) - if err := _Bridge.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeNewWrappedTokenIterator is returned from FilterNewWrappedToken and is used to iterate over the raw logs and unpacked data for NewWrappedToken events raised by the Bridge contract. -type BridgeNewWrappedTokenIterator struct { - Event *BridgeNewWrappedToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeNewWrappedTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeNewWrappedToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeNewWrappedToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeNewWrappedTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeNewWrappedTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeNewWrappedToken represents a NewWrappedToken event raised by the Bridge contract. -type BridgeNewWrappedToken struct { - OriginNetwork uint32 - OriginTokenAddress common.Address - WrappedTokenAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterNewWrappedToken is a free log retrieval operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. -// -// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) -func (_Bridge *BridgeFilterer) FilterNewWrappedToken(opts *bind.FilterOpts) (*BridgeNewWrappedTokenIterator, error) { - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "NewWrappedToken") - if err != nil { - return nil, err - } - return &BridgeNewWrappedTokenIterator{contract: _Bridge.contract, event: "NewWrappedToken", logs: logs, sub: sub}, nil -} - -// WatchNewWrappedToken is a free log subscription operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. -// -// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) -func (_Bridge *BridgeFilterer) WatchNewWrappedToken(opts *bind.WatchOpts, sink chan<- *BridgeNewWrappedToken) (event.Subscription, error) { - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "NewWrappedToken") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeNewWrappedToken) - if err := _Bridge.contract.UnpackLog(event, "NewWrappedToken", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseNewWrappedToken is a log parse operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. -// -// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) -func (_Bridge *BridgeFilterer) ParseNewWrappedToken(log types.Log) (*BridgeNewWrappedToken, error) { - event := new(BridgeNewWrappedToken) - if err := _Bridge.contract.UnpackLog(event, "NewWrappedToken", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Bridge contract. -type BridgeOwnershipTransferredIterator struct { - Event *BridgeOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeOwnershipTransferred represents a OwnershipTransferred event raised by the Bridge contract. -type BridgeOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Bridge *BridgeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &BridgeOwnershipTransferredIterator{contract: _Bridge.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Bridge *BridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeOwnershipTransferred) - if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Bridge *BridgeFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOwnershipTransferred, error) { - event := new(BridgeOwnershipTransferred) - if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/etherman/smartcontracts/globalexitrootmanager/globalexitrootmanager.go b/etherman/smartcontracts/globalexitrootmanager/globalexitrootmanager.go deleted file mode 100644 index d1c0c8cbde..0000000000 --- a/etherman/smartcontracts/globalexitrootmanager/globalexitrootmanager.go +++ /dev/null @@ -1,717 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package globalexitrootmanager - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription -) - -// GlobalexitrootmanagerMetaData contains all meta data concerning the Globalexitrootmanager contract. -var GlobalexitrootmanagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"}],\"name\":\"UpdateGlobalExitRoot\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastGlobalExitRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"globalExitRootMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollupAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bridgeAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastMainnetExitRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRollupExitRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newRoot\",\"type\":\"bytes32\"}],\"name\":\"updateExitRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506104cd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461015e57600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b736600461042f565b60036020526000908152604090205481565b61009660025481565b6100e56100e036600461042f565b610171565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e366004610464565b6102cd565b600554610146906001600160a01b031681565b6040516001600160a01b0390911681526020016100a0565b600454610146906001600160a01b031681565b6005546001600160a01b031633148061019457506004546001600160a01b031633145b61020b5760405162461bcd60e51b815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b6005546001600160a01b031633036102235760018190555b6004546001600160a01b0316330361023b5760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036102c957600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156102ed5750600054600160ff909116105b806103075750303b158015610307575060005460ff166001145b6103795760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610202565b6000805460ff19166001179055801561039c576000805461ff0019166101001790555b600580546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561042a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561044157600080fd5b5035919050565b80356001600160a01b038116811461045f57600080fd5b919050565b6000806040838503121561047757600080fd5b61048083610448565b915061048e60208401610448565b9050925092905056fea264697066735822122017f0e386b65d4b488e1ae82e0a2d700352d5ea3125ecc66d095224034edccd2164736f6c634300080f0033", -} - -// GlobalexitrootmanagerABI is the input ABI used to generate the binding from. -// Deprecated: Use GlobalexitrootmanagerMetaData.ABI instead. -var GlobalexitrootmanagerABI = GlobalexitrootmanagerMetaData.ABI - -// GlobalexitrootmanagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use GlobalexitrootmanagerMetaData.Bin instead. -var GlobalexitrootmanagerBin = GlobalexitrootmanagerMetaData.Bin - -// DeployGlobalexitrootmanager deploys a new Ethereum contract, binding an instance of Globalexitrootmanager to it. -func DeployGlobalexitrootmanager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Globalexitrootmanager, error) { - parsed, err := GlobalexitrootmanagerMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GlobalexitrootmanagerBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Globalexitrootmanager{GlobalexitrootmanagerCaller: GlobalexitrootmanagerCaller{contract: contract}, GlobalexitrootmanagerTransactor: GlobalexitrootmanagerTransactor{contract: contract}, GlobalexitrootmanagerFilterer: GlobalexitrootmanagerFilterer{contract: contract}}, nil -} - -// Globalexitrootmanager is an auto generated Go binding around an Ethereum contract. -type Globalexitrootmanager struct { - GlobalexitrootmanagerCaller // Read-only binding to the contract - GlobalexitrootmanagerTransactor // Write-only binding to the contract - GlobalexitrootmanagerFilterer // Log filterer for contract events -} - -// GlobalexitrootmanagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type GlobalexitrootmanagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GlobalexitrootmanagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type GlobalexitrootmanagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GlobalexitrootmanagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type GlobalexitrootmanagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GlobalexitrootmanagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type GlobalexitrootmanagerSession struct { - Contract *Globalexitrootmanager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GlobalexitrootmanagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type GlobalexitrootmanagerCallerSession struct { - Contract *GlobalexitrootmanagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// GlobalexitrootmanagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type GlobalexitrootmanagerTransactorSession struct { - Contract *GlobalexitrootmanagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GlobalexitrootmanagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type GlobalexitrootmanagerRaw struct { - Contract *Globalexitrootmanager // Generic contract binding to access the raw methods on -} - -// GlobalexitrootmanagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type GlobalexitrootmanagerCallerRaw struct { - Contract *GlobalexitrootmanagerCaller // Generic read-only contract binding to access the raw methods on -} - -// GlobalexitrootmanagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type GlobalexitrootmanagerTransactorRaw struct { - Contract *GlobalexitrootmanagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewGlobalexitrootmanager creates a new instance of Globalexitrootmanager, bound to a specific deployed contract. -func NewGlobalexitrootmanager(address common.Address, backend bind.ContractBackend) (*Globalexitrootmanager, error) { - contract, err := bindGlobalexitrootmanager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Globalexitrootmanager{GlobalexitrootmanagerCaller: GlobalexitrootmanagerCaller{contract: contract}, GlobalexitrootmanagerTransactor: GlobalexitrootmanagerTransactor{contract: contract}, GlobalexitrootmanagerFilterer: GlobalexitrootmanagerFilterer{contract: contract}}, nil -} - -// NewGlobalexitrootmanagerCaller creates a new read-only instance of Globalexitrootmanager, bound to a specific deployed contract. -func NewGlobalexitrootmanagerCaller(address common.Address, caller bind.ContractCaller) (*GlobalexitrootmanagerCaller, error) { - contract, err := bindGlobalexitrootmanager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &GlobalexitrootmanagerCaller{contract: contract}, nil -} - -// NewGlobalexitrootmanagerTransactor creates a new write-only instance of Globalexitrootmanager, bound to a specific deployed contract. -func NewGlobalexitrootmanagerTransactor(address common.Address, transactor bind.ContractTransactor) (*GlobalexitrootmanagerTransactor, error) { - contract, err := bindGlobalexitrootmanager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &GlobalexitrootmanagerTransactor{contract: contract}, nil -} - -// NewGlobalexitrootmanagerFilterer creates a new log filterer instance of Globalexitrootmanager, bound to a specific deployed contract. -func NewGlobalexitrootmanagerFilterer(address common.Address, filterer bind.ContractFilterer) (*GlobalexitrootmanagerFilterer, error) { - contract, err := bindGlobalexitrootmanager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &GlobalexitrootmanagerFilterer{contract: contract}, nil -} - -// bindGlobalexitrootmanager binds a generic wrapper to an already deployed contract. -func bindGlobalexitrootmanager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(GlobalexitrootmanagerABI)) - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Globalexitrootmanager *GlobalexitrootmanagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Globalexitrootmanager.Contract.GlobalexitrootmanagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Globalexitrootmanager *GlobalexitrootmanagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.GlobalexitrootmanagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Globalexitrootmanager *GlobalexitrootmanagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.GlobalexitrootmanagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Globalexitrootmanager *GlobalexitrootmanagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Globalexitrootmanager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Globalexitrootmanager *GlobalexitrootmanagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Globalexitrootmanager *GlobalexitrootmanagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.contract.Transact(opts, method, params...) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Globalexitrootmanager *GlobalexitrootmanagerCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Globalexitrootmanager.contract.Call(opts, &out, "bridgeAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) BridgeAddress() (common.Address, error) { - return _Globalexitrootmanager.Contract.BridgeAddress(&_Globalexitrootmanager.CallOpts) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Globalexitrootmanager *GlobalexitrootmanagerCallerSession) BridgeAddress() (common.Address, error) { - return _Globalexitrootmanager.Contract.BridgeAddress(&_Globalexitrootmanager.CallOpts) -} - -// GetLastGlobalExitRoot is a free data retrieval call binding the contract method 0x3ed691ef. -// -// Solidity: function getLastGlobalExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerCaller) GetLastGlobalExitRoot(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _Globalexitrootmanager.contract.Call(opts, &out, "getLastGlobalExitRoot") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetLastGlobalExitRoot is a free data retrieval call binding the contract method 0x3ed691ef. -// -// Solidity: function getLastGlobalExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) GetLastGlobalExitRoot() ([32]byte, error) { - return _Globalexitrootmanager.Contract.GetLastGlobalExitRoot(&_Globalexitrootmanager.CallOpts) -} - -// GetLastGlobalExitRoot is a free data retrieval call binding the contract method 0x3ed691ef. -// -// Solidity: function getLastGlobalExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerCallerSession) GetLastGlobalExitRoot() ([32]byte, error) { - return _Globalexitrootmanager.Contract.GetLastGlobalExitRoot(&_Globalexitrootmanager.CallOpts) -} - -// GlobalExitRootMap is a free data retrieval call binding the contract method 0x257b3632. -// -// Solidity: function globalExitRootMap(bytes32 ) view returns(uint256) -func (_Globalexitrootmanager *GlobalexitrootmanagerCaller) GlobalExitRootMap(opts *bind.CallOpts, arg0 [32]byte) (*big.Int, error) { - var out []interface{} - err := _Globalexitrootmanager.contract.Call(opts, &out, "globalExitRootMap", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GlobalExitRootMap is a free data retrieval call binding the contract method 0x257b3632. -// -// Solidity: function globalExitRootMap(bytes32 ) view returns(uint256) -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) GlobalExitRootMap(arg0 [32]byte) (*big.Int, error) { - return _Globalexitrootmanager.Contract.GlobalExitRootMap(&_Globalexitrootmanager.CallOpts, arg0) -} - -// GlobalExitRootMap is a free data retrieval call binding the contract method 0x257b3632. -// -// Solidity: function globalExitRootMap(bytes32 ) view returns(uint256) -func (_Globalexitrootmanager *GlobalexitrootmanagerCallerSession) GlobalExitRootMap(arg0 [32]byte) (*big.Int, error) { - return _Globalexitrootmanager.Contract.GlobalExitRootMap(&_Globalexitrootmanager.CallOpts, arg0) -} - -// LastMainnetExitRoot is a free data retrieval call binding the contract method 0x319cf735. -// -// Solidity: function lastMainnetExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerCaller) LastMainnetExitRoot(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _Globalexitrootmanager.contract.Call(opts, &out, "lastMainnetExitRoot") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// LastMainnetExitRoot is a free data retrieval call binding the contract method 0x319cf735. -// -// Solidity: function lastMainnetExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) LastMainnetExitRoot() ([32]byte, error) { - return _Globalexitrootmanager.Contract.LastMainnetExitRoot(&_Globalexitrootmanager.CallOpts) -} - -// LastMainnetExitRoot is a free data retrieval call binding the contract method 0x319cf735. -// -// Solidity: function lastMainnetExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerCallerSession) LastMainnetExitRoot() ([32]byte, error) { - return _Globalexitrootmanager.Contract.LastMainnetExitRoot(&_Globalexitrootmanager.CallOpts) -} - -// LastRollupExitRoot is a free data retrieval call binding the contract method 0x01fd9044. -// -// Solidity: function lastRollupExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerCaller) LastRollupExitRoot(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _Globalexitrootmanager.contract.Call(opts, &out, "lastRollupExitRoot") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// LastRollupExitRoot is a free data retrieval call binding the contract method 0x01fd9044. -// -// Solidity: function lastRollupExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) LastRollupExitRoot() ([32]byte, error) { - return _Globalexitrootmanager.Contract.LastRollupExitRoot(&_Globalexitrootmanager.CallOpts) -} - -// LastRollupExitRoot is a free data retrieval call binding the contract method 0x01fd9044. -// -// Solidity: function lastRollupExitRoot() view returns(bytes32) -func (_Globalexitrootmanager *GlobalexitrootmanagerCallerSession) LastRollupExitRoot() ([32]byte, error) { - return _Globalexitrootmanager.Contract.LastRollupExitRoot(&_Globalexitrootmanager.CallOpts) -} - -// RollupAddress is a free data retrieval call binding the contract method 0x5ec6a8df. -// -// Solidity: function rollupAddress() view returns(address) -func (_Globalexitrootmanager *GlobalexitrootmanagerCaller) RollupAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Globalexitrootmanager.contract.Call(opts, &out, "rollupAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// RollupAddress is a free data retrieval call binding the contract method 0x5ec6a8df. -// -// Solidity: function rollupAddress() view returns(address) -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) RollupAddress() (common.Address, error) { - return _Globalexitrootmanager.Contract.RollupAddress(&_Globalexitrootmanager.CallOpts) -} - -// RollupAddress is a free data retrieval call binding the contract method 0x5ec6a8df. -// -// Solidity: function rollupAddress() view returns(address) -func (_Globalexitrootmanager *GlobalexitrootmanagerCallerSession) RollupAddress() (common.Address, error) { - return _Globalexitrootmanager.Contract.RollupAddress(&_Globalexitrootmanager.CallOpts) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _rollupAddress, address _bridgeAddress) returns() -func (_Globalexitrootmanager *GlobalexitrootmanagerTransactor) Initialize(opts *bind.TransactOpts, _rollupAddress common.Address, _bridgeAddress common.Address) (*types.Transaction, error) { - return _Globalexitrootmanager.contract.Transact(opts, "initialize", _rollupAddress, _bridgeAddress) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _rollupAddress, address _bridgeAddress) returns() -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) Initialize(_rollupAddress common.Address, _bridgeAddress common.Address) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.Initialize(&_Globalexitrootmanager.TransactOpts, _rollupAddress, _bridgeAddress) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _rollupAddress, address _bridgeAddress) returns() -func (_Globalexitrootmanager *GlobalexitrootmanagerTransactorSession) Initialize(_rollupAddress common.Address, _bridgeAddress common.Address) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.Initialize(&_Globalexitrootmanager.TransactOpts, _rollupAddress, _bridgeAddress) -} - -// UpdateExitRoot is a paid mutator transaction binding the contract method 0x33d6247d. -// -// Solidity: function updateExitRoot(bytes32 newRoot) returns() -func (_Globalexitrootmanager *GlobalexitrootmanagerTransactor) UpdateExitRoot(opts *bind.TransactOpts, newRoot [32]byte) (*types.Transaction, error) { - return _Globalexitrootmanager.contract.Transact(opts, "updateExitRoot", newRoot) -} - -// UpdateExitRoot is a paid mutator transaction binding the contract method 0x33d6247d. -// -// Solidity: function updateExitRoot(bytes32 newRoot) returns() -func (_Globalexitrootmanager *GlobalexitrootmanagerSession) UpdateExitRoot(newRoot [32]byte) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.UpdateExitRoot(&_Globalexitrootmanager.TransactOpts, newRoot) -} - -// UpdateExitRoot is a paid mutator transaction binding the contract method 0x33d6247d. -// -// Solidity: function updateExitRoot(bytes32 newRoot) returns() -func (_Globalexitrootmanager *GlobalexitrootmanagerTransactorSession) UpdateExitRoot(newRoot [32]byte) (*types.Transaction, error) { - return _Globalexitrootmanager.Contract.UpdateExitRoot(&_Globalexitrootmanager.TransactOpts, newRoot) -} - -// GlobalexitrootmanagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Globalexitrootmanager contract. -type GlobalexitrootmanagerInitializedIterator struct { - Event *GlobalexitrootmanagerInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GlobalexitrootmanagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GlobalexitrootmanagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GlobalexitrootmanagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GlobalexitrootmanagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GlobalexitrootmanagerInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GlobalexitrootmanagerInitialized represents a Initialized event raised by the Globalexitrootmanager contract. -type GlobalexitrootmanagerInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Globalexitrootmanager *GlobalexitrootmanagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*GlobalexitrootmanagerInitializedIterator, error) { - - logs, sub, err := _Globalexitrootmanager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &GlobalexitrootmanagerInitializedIterator{contract: _Globalexitrootmanager.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Globalexitrootmanager *GlobalexitrootmanagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GlobalexitrootmanagerInitialized) (event.Subscription, error) { - - logs, sub, err := _Globalexitrootmanager.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GlobalexitrootmanagerInitialized) - if err := _Globalexitrootmanager.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Globalexitrootmanager *GlobalexitrootmanagerFilterer) ParseInitialized(log types.Log) (*GlobalexitrootmanagerInitialized, error) { - event := new(GlobalexitrootmanagerInitialized) - if err := _Globalexitrootmanager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GlobalexitrootmanagerUpdateGlobalExitRootIterator is returned from FilterUpdateGlobalExitRoot and is used to iterate over the raw logs and unpacked data for UpdateGlobalExitRoot events raised by the Globalexitrootmanager contract. -type GlobalexitrootmanagerUpdateGlobalExitRootIterator struct { - Event *GlobalexitrootmanagerUpdateGlobalExitRoot // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GlobalexitrootmanagerUpdateGlobalExitRootIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GlobalexitrootmanagerUpdateGlobalExitRoot) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GlobalexitrootmanagerUpdateGlobalExitRoot) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GlobalexitrootmanagerUpdateGlobalExitRootIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GlobalexitrootmanagerUpdateGlobalExitRootIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GlobalexitrootmanagerUpdateGlobalExitRoot represents a UpdateGlobalExitRoot event raised by the Globalexitrootmanager contract. -type GlobalexitrootmanagerUpdateGlobalExitRoot struct { - MainnetExitRoot [32]byte - RollupExitRoot [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdateGlobalExitRoot is a free log retrieval operation binding the contract event 0x61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce3. -// -// Solidity: event UpdateGlobalExitRoot(bytes32 indexed mainnetExitRoot, bytes32 indexed rollupExitRoot) -func (_Globalexitrootmanager *GlobalexitrootmanagerFilterer) FilterUpdateGlobalExitRoot(opts *bind.FilterOpts, mainnetExitRoot [][32]byte, rollupExitRoot [][32]byte) (*GlobalexitrootmanagerUpdateGlobalExitRootIterator, error) { - - var mainnetExitRootRule []interface{} - for _, mainnetExitRootItem := range mainnetExitRoot { - mainnetExitRootRule = append(mainnetExitRootRule, mainnetExitRootItem) - } - var rollupExitRootRule []interface{} - for _, rollupExitRootItem := range rollupExitRoot { - rollupExitRootRule = append(rollupExitRootRule, rollupExitRootItem) - } - - logs, sub, err := _Globalexitrootmanager.contract.FilterLogs(opts, "UpdateGlobalExitRoot", mainnetExitRootRule, rollupExitRootRule) - if err != nil { - return nil, err - } - return &GlobalexitrootmanagerUpdateGlobalExitRootIterator{contract: _Globalexitrootmanager.contract, event: "UpdateGlobalExitRoot", logs: logs, sub: sub}, nil -} - -// WatchUpdateGlobalExitRoot is a free log subscription operation binding the contract event 0x61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce3. -// -// Solidity: event UpdateGlobalExitRoot(bytes32 indexed mainnetExitRoot, bytes32 indexed rollupExitRoot) -func (_Globalexitrootmanager *GlobalexitrootmanagerFilterer) WatchUpdateGlobalExitRoot(opts *bind.WatchOpts, sink chan<- *GlobalexitrootmanagerUpdateGlobalExitRoot, mainnetExitRoot [][32]byte, rollupExitRoot [][32]byte) (event.Subscription, error) { - - var mainnetExitRootRule []interface{} - for _, mainnetExitRootItem := range mainnetExitRoot { - mainnetExitRootRule = append(mainnetExitRootRule, mainnetExitRootItem) - } - var rollupExitRootRule []interface{} - for _, rollupExitRootItem := range rollupExitRoot { - rollupExitRootRule = append(rollupExitRootRule, rollupExitRootItem) - } - - logs, sub, err := _Globalexitrootmanager.contract.WatchLogs(opts, "UpdateGlobalExitRoot", mainnetExitRootRule, rollupExitRootRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GlobalexitrootmanagerUpdateGlobalExitRoot) - if err := _Globalexitrootmanager.contract.UnpackLog(event, "UpdateGlobalExitRoot", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdateGlobalExitRoot is a log parse operation binding the contract event 0x61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce3. -// -// Solidity: event UpdateGlobalExitRoot(bytes32 indexed mainnetExitRoot, bytes32 indexed rollupExitRoot) -func (_Globalexitrootmanager *GlobalexitrootmanagerFilterer) ParseUpdateGlobalExitRoot(log types.Log) (*GlobalexitrootmanagerUpdateGlobalExitRoot, error) { - event := new(GlobalexitrootmanagerUpdateGlobalExitRoot) - if err := _Globalexitrootmanager.contract.UnpackLog(event, "UpdateGlobalExitRoot", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/etherman/smartcontracts/polygonzkevm/polygonzkevm.go b/etherman/smartcontracts/polygonzkevm/polygonzkevm.go new file mode 100644 index 0000000000..f371c1f769 --- /dev/null +++ b/etherman/smartcontracts/polygonzkevm/polygonzkevm.go @@ -0,0 +1,4895 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package polygonzkevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// PolygonZkEVMBatchData is an auto generated low-level Go binding around an user-defined struct. +type PolygonZkEVMBatchData struct { + Transactions []byte + GlobalExitRoot [32]byte + Timestamp uint64 + MinForcedTimestamp uint64 +} + +// PolygonZkEVMForcedBatchData is an auto generated low-level Go binding around an user-defined struct. +type PolygonZkEVMForcedBatchData struct { + Transactions []byte + GlobalExitRoot [32]byte + MinForcedTimestamp uint64 +} + +// PolygonZkEVMInitializePackedParameters is an auto generated low-level Go binding around an user-defined struct. +type PolygonZkEVMInitializePackedParameters struct { + Admin common.Address + ChainID uint64 + TrustedSequencer common.Address + PendingStateTimeout uint64 + ForceBatchAllowed bool + TrustedAggregator common.Address + TrustedAggregatorTimeout uint64 +} + +// PolygonzkevmMetaData contains all meta data concerning the Polygonzkevm contract. +var PolygonzkevmMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"ConsolidatePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"OverridePendingState\",\"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\":\"storedStateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provedStateRoot\",\"type\":\"bytes32\"}],\"name\":\"ProveNonDeterministicPendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newForceBatchAllowed\",\"type\":\"bool\"}],\"name\":\"SetForceBatchAllowed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"SetMultiplierBatchFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"SetPendingStateTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"SetTrustedAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"SetTrustedAggregatorTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVeryBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"SetVeryBatchTimeTarget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"TrustedVerifyBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FORCE_BATCH_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HALT_AGGREGATION_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_BATCH_MULTIPLIER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TRANSACTIONS_BYTE_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_VERIFY_BATCHES\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequencedBatchNum\",\"type\":\"uint64\"}],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"batchNumToStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculateRewardPerBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"consolidatePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maticAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBatchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oldStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"}],\"name\":\"getInputSnarkBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_matic\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"_rollupVerifier\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trustedSequencer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateTimeout\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceBatchAllowed\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"trustedAggregator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"trustedAggregatorTimeout\",\"type\":\"uint64\"}],\"internalType\":\"structPolygonZkEVM.InitializePackedParameters\",\"name\":\"initializePackedParameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"genesisRoot\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_trustedSequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"isPendingStateConsolidable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingState\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingStateConsolidated\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"matic\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiplierBatchFee\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"overridePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingStateTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingStateTransitions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"proveNonDeterministicPendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupVerifier\",\"outputs\":[{\"internalType\":\"contractIVerifierRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structPolygonZkEVM.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structPolygonZkEVM.ForcedBatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"sequencedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"accInputHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequencedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"previousLastBatchSequenced\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"newForceBatchAllowed\",\"type\":\"bool\"}],\"name\":\"setForceBatchAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"setMultiplierBatchFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"setPendingStateTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"setTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"setTrustedAggregatorTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVeryBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"setVeryBatchTimeTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregatorTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"trustedVerifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"verifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"veryBatchTimeTarget\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50615f3b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c80638da5cb5b116101f4578063cfa8ed471161011a578063e7a7ed02116100ad578063f14916d61161007c578063f14916d6146108f2578063f2fde38b14610905578063f851a44014610918578063f8b823e41461092b57600080fd5b8063e7a7ed021461089f578063e8bf92ed146108b9578063eaeb077b146108cc578063edc41121146108df57600080fd5b8063d939b315116100e9578063d939b31514610861578063dbc169761461087b578063e11f3f1814610883578063e217cfd61461089657600080fd5b8063cfa8ed471461080d578063d02103ca14610827578063d8d1091b1461083a578063d8f54db01461084d57600080fd5b8063ab9fc5ef11610192578063b6b0b09711610161578063b6b0b097146107c5578063c0ed84e0146107df578063c89e42df146107e7578063cf136306146107fa57600080fd5b8063ab9fc5ef14610713578063adc879e91461071d578063afd23cbe14610737578063b4d63f581461076557600080fd5b80639eb831b9116101ce5780639eb831b9146106d85780639f0d039d146106e0578063a3c573eb146106e8578063aa58bad6146106fb57600080fd5b80638da5cb5b146106ac57806399f5634e146106bd5780639c9f3dfe146106c557600080fd5b80634a910e6a116102d9578063715018a611610277578063837a473811610246578063837a473814610607578063841b24d7146106755780638b48931e1461068f5780638c4a0af71461069957600080fd5b8063715018a6146105c65780637215541a146105ce57806375c508b3146105e15780637fcb3653146105f457600080fd5b806360943d6a116102b357806360943d6a1461056d5780636b8616ce146105805780636ff512cc146105a0578063704b6c02146105b357600080fd5b80634a910e6a146105325780635392c5e014610545578063542028d51461056557600080fd5b8063383b3be811610351578063456052671161032057806345605267146104d8578063458c0477146104f25780634834a343146105055780634a1a89a71461051857600080fd5b8063383b3be814610485578063394218e9146104985780633c158267146104ab578063423fa856146104be57600080fd5b806319d8ac611161038d57806319d8ac6114610404578063220d78991461042f57806329878983146104425780632d0889d31461046d57600080fd5b8063107bf28c146103b457806315064c96146103d25780631816b7e5146103ef575b600080fd5b6103bc610934565b6040516103c99190615364565b60405180910390f35b6065546103df9060ff1681565b60405190151581526020016103c9565b6104026103fd366004615377565b6109c2565b005b606854610417906001600160401b031681565b6040516001600160401b0390911681526020016103c9565b6103bc61043d3660046153b7565b610b43565b606a54610455906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b610477620493e081565b6040519081526020016103c9565b6103df610493366004615404565b610ce9565b6104026104a6366004615404565b610d30565b6104026104b9366004615541565b610f61565b60685461041790600160401b90046001600160401b031681565b60685461041790600160801b90046001600160401b031681565b607254610417906001600160401b031681565b61040261051336600461567f565b611840565b60725461041790600160401b90046001600160401b031681565b610402610540366004615404565b611c16565b610477610553366004615404565b606d6020526000908152604090205481565b6103bc611cd5565b61040261057b366004615721565b611ce2565b61047761058e366004615404565b60666020526000908152604090205481565b6104026105ae3660046157f8565b61209b565b6104026105c13660046157f8565b612170565b610402612224565b6104026105dc366004615404565b612238565b6104026105ef366004615815565b612492565b606954610417906001600160401b031681565b61064a6106153660046158b3565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103c9565b60725461041790600160c01b90046001600160401b031681565b61041762093a8081565b6104026106a73660046158da565b612582565b6033546001600160a01b0316610455565b610477612635565b6104026106d3366004615404565b612731565b610477600c81565b607454610477565b607054610455906001600160a01b031681565b6065546104179061010090046001600160401b031681565b6104176206978081565b606c5461041790600160a81b90046001600160401b031681565b606554610752906901000000000000000000900461ffff1681565b60405161ffff90911681526020016103c9565b6107a0610773366004615404565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103c9565b60655461045590600160581b90046001600160a01b031681565b61041761292f565b6104026107f53660046158f7565b61297c565b610402610808366004615404565b612a1e565b60695461045590600160401b90046001600160a01b031681565b606c54610455906001600160a01b031681565b610402610848366004615933565b612adb565b606c546103df90600160a01b900460ff1681565b60725461041790600160801b90046001600160401b031681565b610402613165565b610402610891366004615815565b6132b3565b6104176103e881565b60685461041790600160c01b90046001600160401b031681565b606b54610455906001600160a01b031681565b6104026108da366004615a25565b61347e565b6104026108ed36600461567f565b6138bc565b6104026109003660046157f8565b613a3b565b6104026109133660046157f8565b613aef565b607354610455906001600160a01b031681565b61047760745481565b606f805461094190615a69565b80601f016020809104026020016040519081016040528092919081815260200182805461096d90615a69565b80156109ba5780601f1061098f576101008083540402835291602001916109ba565b820191906000526020600020905b81548152906001019060200180831161099d57829003601f168201915b505050505081565b6073546001600160a01b03163314610a2d5760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b60648201526084015b60405180910390fd5b6103e88161ffff1610158015610a4857506104008161ffff16105b610ae05760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f7260648201527f726563742072616e676500000000000000000000000000000000000000000000608482015260a401610a24565b606580546affff0000000000000000001916690100000000000000000061ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610b7557508115155b610be9576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f742065786973746064820152608401610a24565b80610c5e576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f742065786973746064820152608401610a24565b606c54604080516bffffffffffffffffffffffff193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610d1f92600160801b90920481169116615ab9565b6001600160401b0316111592915050565b6073546001600160a01b03163314610d965760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b62093a806001600160401b0382161115610e3e5760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201527f676174696f6e2074696d656f7574000000000000000000000000000000000000608482015260a401610a24565b60655460ff16610efa576072546001600160401b03600160c01b909104811690821610610efa5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201527f6f77657200000000000000000000000000000000000000000000000000000000608482015260a401610a24565b6072805477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610b38565b60655460ff1615610fe55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b606954600160401b90046001600160a01b0316331461106c5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e6365720000000000006064820152608401610a24565b8051806110e15760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e636520312062617463680000006064820152608401610a24565b6103e8811061115a576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e7920626174636865736064820152608401610a24565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156116535760008782815181106111ad576111ad615ae4565b60200260200101519050600081606001516001600160401b0316111561138457836111d781615afa565b94505060008160000151805190602001208260200151836060015160405160200161122293929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146112c85760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204660448201527f6f7263656420626174636865732064617461206d757374206d617463680000006064820152608401610a24565b81606001516001600160401b031682604001516001600160401b0316101561137e5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204660448201527f6f7263656420626174636865732074696d657374616d70206d7573742062652060648201527f626967676572206f7220657175616c207468616e206d696e0000000000000000608482015260a401610a24565b50611512565b602081015115806114265750606c5460208201516040517f257b36320000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163257b3632916113e09160040190815260200190565b6020604051808303816000875af11580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190615b20565b15155b6114985760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d7573742065786973740000000000006064820152608401610a24565b805151620493e0116115125760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610a24565b856001600160401b031681604001516001600160401b03161015801561154557504281604001516001600160401b031611155b6115b75760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e67650000006064820152608401610a24565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c01604051602081830303815290604052805190602001209250848061163590615afa565b9550508060400151955050808061164b90615b39565b915050611191565b506068546001600160401b03600160c01b909104811690831611156116e05760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204660448201527f6f7263652062617463686573206f766572666c6f7700000000000000000000006064820152608401610a24565b60685460009061170090600160801b90046001600160401b031684615b52565b611713906001600160401b031687615b7a565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166fffffffffffffffffffffffffffffffff199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b928716929092029190911790556074549091506117f1903390309084906117d69190615b91565b606554600160581b90046001600160a01b0316929190613b7c565b6117f9613c2d565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156118c45760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b6072546001600160401b0387811660009081526067602052604090206001015442926118fb92600160c01b90910481169116615ab9565b6001600160401b0316111561199e5760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f74206578706960648201527f7265640000000000000000000000000000000000000000000000000000000000608482015260a401610a24565b6103e86119ab8888615b52565b6001600160401b031610611a275760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e792062617463686573000000006064820152608401610a24565b611a378888888888888888613cd1565b611a408661424e565b607254600160801b90046001600160401b0316600003611b11576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615611aae57607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b50505050611bcb565b611b19613c2d565b607280546001600160401b0316906000611b3283615afa565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026fffffffffffffffffffffffffffffffff199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b03163314611cc957611c3181610ce9565b611cc95760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f74207265616460648201527f7920746f20626520636f6e736f6c696461746564000000000000000000000000608482015260a401610a24565b611cd281614440565b50565b606e805461094190615a69565b600054610100900460ff1615808015611d025750600054600160ff909116105b80611d1c5750303b158015611d1c575060005460ff166001145b611d8e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a24565b6000805460ff191660011790558015611db1576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c811691909117909255606580547fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b8c851602179055606b805482168a841617905560708054909116918816919091179055611e2e60208601866157f8565b607380546001600160a01b0319166001600160a01b0392909216919091179055611e5e60608601604087016157f8565b606980546001600160a01b0392909216600160401b027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055611eae60c0860160a087016157f8565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611f0b60e0860160c08701615404565b607280546001600160401b0392909216600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055611f536040860160208701615404565b606c80546001600160401b0392909216600160a81b027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff909216919091179055611fa36080860160608701615404565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055611fdf60a08601608087016158da565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e6120078482615bf6565b50606f6120148382615bf6565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea00000000000007080017905561204a61462a565b8015612090576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146121015760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff16600160401b6001600160a01b038416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610b38565b6073546001600160a01b031633146121d65760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b607380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190602001610b38565b61222c6146b0565b612236600061470a565b565b6033546001600160a01b0316331461248a57600061225461292f565b9050806001600160401b0316826001600160401b0316116122dd5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e63795360448201527f746174653a20426174636820616c7265616479207665726966696564000000006064820152608401610a24565b6068546001600160401b03600160401b90910481169083161180159061231f57506001600160401b038083166000908152606760205260409020600101541615155b6123b75760405162461bcd60e51b815260206004820152605060248201527f506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e63795360448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201527f20656e64206f662073657175656e636500000000000000000000000000000000608482015260a401610a24565b6001600160401b0380831660009081526067602052604090206001015442916123e59162093a809116615ab9565b6001600160401b031611156124885760405162461bcd60e51b815260206004820152604d60248201527f506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e63795360448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201527f73206e6f74206578706972656400000000000000000000000000000000000000608482015260a401610a24565b505b611cd261475c565b60655460ff16156125165760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b6125278989898989898989896147cc565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a161209061475c565b6073546001600160a01b031633146125e85760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610b3890831515815260200190565b6065546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000918291600160581b9091046001600160a01b0316906370a0823190602401602060405180830381865afa1580156126a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c59190615b20565b905060006126d161292f565b6068546001600160401b03600160401b820481169161270191600160801b8204811691600160c01b900416615b52565b61270b9190615ab9565b6127159190615b52565b6001600160401b0316905061272a8183615ccb565b9250505090565b6073546001600160a01b031633146127975760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b62093a806001600160401b038216111561283f5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f60648201527f6e2074696d656f75740000000000000000000000000000000000000000000000608482015260a401610a24565b60655460ff166128d4576072546001600160401b03600160801b9091048116908216106128d45760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f776572006064820152608401610a24565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610b38565b6072546000906001600160401b03161561296c57506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b031633146129e25760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606e6129ee8282615bf6565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610b389190615364565b6073546001600160a01b03163314612a845760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610b38565b60655460ff1615612b5f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b606c54600160a01b900460ff161515600114612bef5760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560448201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606482015262626c6560e81b608482015260a401610a24565b805180612c645760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a204d75737420666f726365206174206c656173742031206261746368006064820152608401610a24565b6103e88110612d015760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201527f6865730000000000000000000000000000000000000000000000000000000000608482015260a401610a24565b6068546001600160401b03600160c01b8204811691612d29918491600160801b900416615cdf565b1115612d9d5760405162461bcd60e51b815260206004820152603760248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a20466f72636520626174636820696e76616c69640000000000000000006064820152608401610a24565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b8481101561305e576000868281518110612dea57612dea615ae4565b602002602001015190508380612dff90615afa565b825180516020918201208185015160408087015181519485019390935283015260c01b6001600160c01b03191660608201529095506000915060680160408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612f075760405162461bcd60e51b815260206004820152604260248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610a24565b612f12600188615b7a565b8303612fcf5742620697808360400151612f2c9190615ab9565b6001600160401b03161115612fcf5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636860448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f60648201527f757420706572696f640000000000000000000000000000000000000000000000608482015260a401610a24565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c01604051602081830303815290604052805190602001209350858061304690615afa565b9650505050808061305690615b39565b915050612dce565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166fffffffffffffffffffffffffffffffff199092169190911792861685029290921790915585547fffffffffffffffff00000000000000000000000000000000ffffffffffffffff1694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166131dd5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610a24565b6073546001600160a01b031633146132435760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561329357600080fd5b505af11580156132a7573d6000803e3d6000fd5b50505050612236614ed6565b606a546001600160a01b031633146133335760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160448201527f746f723a204f6e6c7920747275737465642061676772656761746f72000000006064820152608401610a24565b6133448989898989898989896147cc565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d60205260409020859055607254161561339857607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b50506072805477ffffffffffffffffffffffffffffffffffffffffffffffff167a093a80000000000000000000000000000000000000000000000000179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff16156135025760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b606c54600160a01b900460ff1615156001146135925760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560448201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606482015262626c6560e81b608482015260a401610a24565b600061359d60745490565b9050818111156136155760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e60448201527f6f756768206d61746963000000000000000000000000000000000000000000006064820152608401610a24565b620493e083511061368e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e736160448201527f6374696f6e73206279746573206f766572666c6f7700000000000000000000006064820152608401610a24565b6065546136ad90600160581b90046001600160a01b0316333084613b7c565b606c54604080517f3ed691ef00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa158015613710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137349190615b20565b60688054919250600160c01b9091046001600160401b031690601861375883615afa565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050838051906020012081426040516020016137b793929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b03166000908152606690935291205532330361385b57606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a26138b6565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9318233876040516138ad93929190615cf7565b60405180910390a25b50505050565b606a546001600160a01b0316331461393c5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160448201527f746f723a204f6e6c7920747275737465642061676772656761746f72000000006064820152608401610a24565b61394c8888888888888888613cd1565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156139a057607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156139e657600080fd5b505af11580156139fa573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611c04565b6073546001600160a01b03163314613aa15760405162461bcd60e51b815260206004820152602360248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460448201526236b4b760e91b6064820152608401610a24565b606a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90602001610b38565b613af76146b0565b6001600160a01b038116613b735760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a24565b611cd28161470a565b6040516001600160a01b03808516602483015283166044820152606481018290526138b69085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614f83565b6072546001600160401b03600160401b820481169116111561223657607254600090613c6a90600160401b90046001600160401b03166001615ab9565b9050613c7581610ce9565b15611cd257607254600090600290613c979084906001600160401b0316615b52565b613ca19190615d28565b613cab9083615ab9565b9050613cb681610ce9565b15613cc857613cc481614440565b5050565b613cc482614440565b600080613cdc61292f565b90506001600160401b038a1615613e68576072546001600160401b03908116908b161115613d985760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527f75616c207468616e206c61737450656e64696e67537461746500000000000000608482015260a401610a24565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613e625760405162461bcd60e51b815260206004820152604d60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e60448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201527f6720737461746520626174636800000000000000000000000000000000000000608482015260a401610a24565b50613fcb565b6001600160401b0389166000908152606d6020526040902054915081613f1d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f74206560648201527f7869737400000000000000000000000000000000000000000000000000000000608482015260a401610a24565b806001600160401b0316896001600160401b03161115613fcb5760405162461bcd60e51b815260206004820152605e60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e60448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a401610a24565b806001600160401b0316886001600160401b0316116140785760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e2060648201527f63757272656e744c617374566572696669656442617463680000000000000000608482015260a401610a24565b60006140878a8a8a868b610b43565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140bc9190615d4e565b602060405180830381855afa1580156140d9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906140fc9190615b20565b6141069190615d6a565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d9161414a918b918b918b9190600401615d7e565b602060405180830381865afa158015614167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418b9190615df8565b6141fd5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201527f76616c69642070726f6f660000000000000000000000000000000000000000006064820152608401610a24565b6142403361420b858d615b52565b6001600160401b031661421c612635565b6142269190615b91565b606554600160581b90046001600160a01b0316919061506d565b505050505050505050505050565b600061425861292f565b9050816000806142688484615b52565b6001600160401b031690505b836001600160401b0316836001600160401b03161461431a576001600160401b038084166000908152606760205260409020606554600182015491926101009091048116916142c4911642615b7a565b11156142ff5760018101546142e990600160401b90046001600160401b031685615b52565b6142fc906001600160401b031684615cdf565b92505b60010154600160401b90046001600160401b03169250614274565b60006143268383615b7a565b9050828110156143a657600061433c8285615b7a565b9050600c811161434c578061434f565b600c5b905061435c816003615b91565b61436790600a615ef9565b6065546143869083906901000000000000000000900461ffff16615ef9565b6074546143939190615b91565b61439d9190615ccb565b60745550614438565b60006143b28483615b7a565b9050600c81116143c257806143c5565b600c5b905060006143d4826003615b91565b6143df90600a615ef9565b6065546143fe9084906901000000000000000000900461ffff16615ef9565b60745461440b9190615b91565b6144159190615ccb565b9050806074546074546144289190615b91565b6144329190615ccb565b60745550505b505050505050565b6001600160401b0381161580159061446d57506072546001600160401b03600160401b9091048116908216115b801561448857506072546001600160401b0390811690821611155b6144fa5760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c6964006064820152608401610a24565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d9094529382902092909255607280546fffffffffffffffff000000000000000019169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b1580156145bc57600080fd5b505af11580156145d0573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e846002015460405161461d91815260200190565b60405180910390a3505050565b600054610100900460ff166146a75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a24565b6122363361470a565b6033546001600160a01b031633146122365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a24565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156147ac57600080fd5b505af11580156147c0573d6000803e3d6000fd5b505050506122366150b6565b60006001600160401b038a161561497c576072546001600160401b03908116908b1611156148ae5760405162461bcd60e51b815260206004820152606560248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e6760848201527f537461746500000000000000000000000000000000000000000000000000000060a482015260c401610a24565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146149765760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d61746360648201527f68207468652070656e64696e6720737461746520626174636800000000000000608482015260a401610a24565b50614ae6565b506001600160401b0387166000908152606d602052604090205480614a2f5760405162461bcd60e51b815260206004820152605060248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201527f7420646f6573206e6f7420657869737400000000000000000000000000000000608482015260a401610a24565b6069546001600160401b039081169089161115614ae65760405162461bcd60e51b815260206004820152606360248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c401610a24565b6072546001600160401b03908116908a1611801590614b165750896001600160401b0316896001600160401b0316115b8015614b3757506072546001600160401b03600160401b9091048116908a16115b614bcf5760405162461bcd60e51b815260206004820152604860248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d206960648201527f6e636f7272656374000000000000000000000000000000000000000000000000608482015260a401610a24565b6001600160401b03898116600090815260716020526040902054600160401b9004811690881614614c9a5760405162461bcd60e51b815260206004820152606360248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c401610a24565b6000614ca9898989858a610b43565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051614cde9190615d4e565b602060405180830381855afa158015614cfb573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614d1e9190615b20565b614d289190615d6a565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614d6c918a918a918a9190600401615d7e565b602060405180830381865afa158015614d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dad9190615df8565b614e1f5760405162461bcd60e51b815260206004820152603760248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a20496e76616c69642070726f6f660000000000000000006064820152608401610a24565b6001600160401b038b166000908152607160205260409020600201548790036142405760405162461bcd60e51b815260206004820152605b60248201527f506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e6460448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a401610a24565b60655460ff16614f4e5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610a24565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000614fd8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151729092919063ffffffff16565b8051909150156150685780806020019051810190614ff69190615df8565b6150685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a24565b505050565b6040516001600160a01b0383166024820152604481018290526150689084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613bc9565b60655460ff161561513a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401610a24565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6060615181848460008561518b565b90505b9392505050565b6060824710156152035760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a24565b6001600160a01b0385163b61525a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a24565b600080866001600160a01b031685876040516152769190615d4e565b60006040518083038185875af1925050503d80600081146152b3576040519150601f19603f3d011682016040523d82523d6000602084013e6152b8565b606091505b50915091506152c88282866152d3565b979650505050505050565b606083156152e2575081615184565b8251156152f25782518084602001fd5b8160405162461bcd60e51b8152600401610a249190615364565b60005b8381101561532757818101518382015260200161530f565b838111156138b65750506000910152565b6000815180845261535081602086016020860161530c565b601f01601f19169290920160200192915050565b6020815260006151846020830184615338565b60006020828403121561538957600080fd5b813561ffff8116811461518457600080fd5b80356001600160401b03811681146153b257600080fd5b919050565b600080600080600060a086880312156153cf57600080fd5b6153d88661539b565b94506153e66020870161539b565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561541657600080fd5b6151848261539b565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156154575761545761541f565b60405290565b604051606081016001600160401b03811182821017156154575761545761541f565b604051601f8201601f191681016001600160401b03811182821017156154a7576154a761541f565b604052919050565b60006001600160401b038211156154c8576154c861541f565b5060051b60200190565b600082601f8301126154e357600080fd5b81356001600160401b038111156154fc576154fc61541f565b61550f601f8201601f191660200161547f565b81815284602083860101111561552457600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561555457600080fd5b82356001600160401b038082111561556b57600080fd5b818501915085601f83011261557f57600080fd5b813561559261558d826154af565b61547f565b81815260059190911b830184019084810190888311156155b157600080fd5b8585015b8381101561564a578035858111156155cd5760008081fd5b86016080818c03601f19018113156155e55760008081fd5b6155ed615435565b89830135888111156155ff5760008081fd5b61560d8e8c838701016154d2565b8252506040808401358b830152606061562781860161539b565b8284015261563684860161539b565b9083015250855250509186019186016155b5565b5098975050505050505050565b806040810183101561566857600080fd5b92915050565b806080810183101561566857600080fd5b6000806000806000806000806101a0898b03121561569c57600080fd5b6156a58961539b565b97506156b360208a0161539b565b96506156c160408a0161539b565b955060608901359450608089013593506156de8a60a08b01615657565b92506156ed8a60e08b0161566e565b91506156fd8a6101608b01615657565b90509295985092959890939650565b6001600160a01b0381168114611cd257600080fd5b600080600080600080600080888a036101c081121561573f57600080fd5b893561574a8161570c565b985060208a013561575a8161570c565b975060408a013561576a8161570c565b965060608a013561577a8161570c565b955060e0607f198201121561578e57600080fd5b5060808901935061016089013592506101808901356001600160401b03808211156157b857600080fd5b6157c48c838d016154d2565b93506101a08b01359150808211156157db57600080fd5b506157e88b828c016154d2565b9150509295985092959890939650565b60006020828403121561580a57600080fd5b81356151848161570c565b60008060008060008060008060006101c08a8c03121561583457600080fd5b61583d8a61539b565b985061584b60208b0161539b565b975061585960408b0161539b565b965061586760608b0161539b565b955060808a0135945060a08a013593506158848b60c08c01615657565b92506158948b6101008c0161566e565b91506158a48b6101808c01615657565b90509295985092959850929598565b6000602082840312156158c557600080fd5b5035919050565b8015158114611cd257600080fd5b6000602082840312156158ec57600080fd5b8135615184816158cc565b60006020828403121561590957600080fd5b81356001600160401b0381111561591f57600080fd5b61592b848285016154d2565b949350505050565b6000602080838503121561594657600080fd5b82356001600160401b038082111561595d57600080fd5b818501915085601f83011261597157600080fd5b813561597f61558d826154af565b81815260059190911b8301840190848101908883111561599e57600080fd5b8585015b8381101561564a578035858111156159ba5760008081fd5b86016060818c03601f19018113156159d25760008081fd5b6159da61545d565b89830135888111156159ec5760008081fd5b6159fa8e8c838701016154d2565b8252506040808401358b830152615a1283850161539b565b90820152855250509186019186016159a2565b60008060408385031215615a3857600080fd5b82356001600160401b03811115615a4e57600080fd5b615a5a858286016154d2565b95602094909401359450505050565b600181811c90821680615a7d57607f821691505b602082108103615a9d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115615adb57615adb615aa3565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103615b1657615b16615aa3565b6001019392505050565b600060208284031215615b3257600080fd5b5051919050565b600060018201615b4b57615b4b615aa3565b5060010190565b60006001600160401b0383811690831681811015615b7257615b72615aa3565b039392505050565b600082821015615b8c57615b8c615aa3565b500390565b6000816000190483118215151615615bab57615bab615aa3565b500290565b601f82111561506857600081815260208120601f850160051c81016020861015615bd75750805b601f850160051c820191505b8181101561443857828155600101615be3565b81516001600160401b03811115615c0f57615c0f61541f565b615c2381615c1d8454615a69565b84615bb0565b602080601f831160018114615c585760008415615c405750858301515b600019600386901b1c1916600185901b178555614438565b600085815260208120601f198616915b82811015615c8757888601518255948401946001909101908401615c68565b5085821015615ca55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b600082615cda57615cda615cb5565b500490565b60008219821115615cf257615cf2615aa3565b500190565b8381526001600160a01b0383166020820152606060408201526000615d1f6060830184615338565b95945050505050565b60006001600160401b0380841680615d4257615d42615cb5565b92169190910492915050565b60008251615d6081846020870161530c565b9190910192915050565b600082615d7957615d79615cb5565b500690565b61012081016040808784376000838201818152879190815b6002811015615db657848483379084018281529284019290600101615d96565b5050828760c0870137610100850181815286935091505b6001811015615dec578251825260209283019290910190600101615dcd565b50505095945050505050565b600060208284031215615e0a57600080fd5b8151615184816158cc565b600181815b80851115615e50578160001904821115615e3657615e36615aa3565b80851615615e4357918102915b93841c9390800290615e1a565b509250929050565b600082615e6757506001615668565b81615e7457506000615668565b8160018114615e8a5760028114615e9457615eb0565b6001915050615668565b60ff841115615ea557615ea5615aa3565b50506001821b615668565b5060208310610133831016604e8410600b8410161715615ed3575081810a615668565b615edd8383615e15565b8060001904821115615ef157615ef1615aa3565b029392505050565b60006151848383615e5856fea2646970667358221220ea509bc505efc7dc646bd307099d94fdc965a048e39f3a02723bea443cbced3b64736f6c634300080f0033", +} + +// PolygonzkevmABI is the input ABI used to generate the binding from. +// Deprecated: Use PolygonzkevmMetaData.ABI instead. +var PolygonzkevmABI = PolygonzkevmMetaData.ABI + +// PolygonzkevmBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PolygonzkevmMetaData.Bin instead. +var PolygonzkevmBin = PolygonzkevmMetaData.Bin + +// DeployPolygonzkevm deploys a new Ethereum contract, binding an instance of Polygonzkevm to it. +func DeployPolygonzkevm(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Polygonzkevm, error) { + parsed, err := PolygonzkevmMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PolygonzkevmBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Polygonzkevm{PolygonzkevmCaller: PolygonzkevmCaller{contract: contract}, PolygonzkevmTransactor: PolygonzkevmTransactor{contract: contract}, PolygonzkevmFilterer: PolygonzkevmFilterer{contract: contract}}, nil +} + +// Polygonzkevm is an auto generated Go binding around an Ethereum contract. +type Polygonzkevm struct { + PolygonzkevmCaller // Read-only binding to the contract + PolygonzkevmTransactor // Write-only binding to the contract + PolygonzkevmFilterer // Log filterer for contract events +} + +// PolygonzkevmCaller is an auto generated read-only Go binding around an Ethereum contract. +type PolygonzkevmCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PolygonzkevmTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PolygonzkevmFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PolygonzkevmSession struct { + Contract *Polygonzkevm // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonzkevmCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PolygonzkevmCallerSession struct { + Contract *PolygonzkevmCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PolygonzkevmTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PolygonzkevmTransactorSession struct { + Contract *PolygonzkevmTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonzkevmRaw is an auto generated low-level Go binding around an Ethereum contract. +type PolygonzkevmRaw struct { + Contract *Polygonzkevm // Generic contract binding to access the raw methods on +} + +// PolygonzkevmCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PolygonzkevmCallerRaw struct { + Contract *PolygonzkevmCaller // Generic read-only contract binding to access the raw methods on +} + +// PolygonzkevmTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PolygonzkevmTransactorRaw struct { + Contract *PolygonzkevmTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPolygonzkevm creates a new instance of Polygonzkevm, bound to a specific deployed contract. +func NewPolygonzkevm(address common.Address, backend bind.ContractBackend) (*Polygonzkevm, error) { + contract, err := bindPolygonzkevm(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Polygonzkevm{PolygonzkevmCaller: PolygonzkevmCaller{contract: contract}, PolygonzkevmTransactor: PolygonzkevmTransactor{contract: contract}, PolygonzkevmFilterer: PolygonzkevmFilterer{contract: contract}}, nil +} + +// NewPolygonzkevmCaller creates a new read-only instance of Polygonzkevm, bound to a specific deployed contract. +func NewPolygonzkevmCaller(address common.Address, caller bind.ContractCaller) (*PolygonzkevmCaller, error) { + contract, err := bindPolygonzkevm(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PolygonzkevmCaller{contract: contract}, nil +} + +// NewPolygonzkevmTransactor creates a new write-only instance of Polygonzkevm, bound to a specific deployed contract. +func NewPolygonzkevmTransactor(address common.Address, transactor bind.ContractTransactor) (*PolygonzkevmTransactor, error) { + contract, err := bindPolygonzkevm(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PolygonzkevmTransactor{contract: contract}, nil +} + +// NewPolygonzkevmFilterer creates a new log filterer instance of Polygonzkevm, bound to a specific deployed contract. +func NewPolygonzkevmFilterer(address common.Address, filterer bind.ContractFilterer) (*PolygonzkevmFilterer, error) { + contract, err := bindPolygonzkevm(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PolygonzkevmFilterer{contract: contract}, nil +} + +// bindPolygonzkevm binds a generic wrapper to an already deployed contract. +func bindPolygonzkevm(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(PolygonzkevmABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonzkevm *PolygonzkevmRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonzkevm.Contract.PolygonzkevmCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonzkevm *PolygonzkevmRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevm.Contract.PolygonzkevmTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonzkevm *PolygonzkevmRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonzkevm.Contract.PolygonzkevmTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonzkevm *PolygonzkevmCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonzkevm.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonzkevm *PolygonzkevmTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevm.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonzkevm *PolygonzkevmTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonzkevm.Contract.contract.Transact(opts, method, params...) +} + +// FORCEBATCHTIMEOUT is a free data retrieval call binding the contract method 0xab9fc5ef. +// +// Solidity: function FORCE_BATCH_TIMEOUT() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) FORCEBATCHTIMEOUT(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "FORCE_BATCH_TIMEOUT") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// FORCEBATCHTIMEOUT is a free data retrieval call binding the contract method 0xab9fc5ef. +// +// Solidity: function FORCE_BATCH_TIMEOUT() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) FORCEBATCHTIMEOUT() (uint64, error) { + return _Polygonzkevm.Contract.FORCEBATCHTIMEOUT(&_Polygonzkevm.CallOpts) +} + +// FORCEBATCHTIMEOUT is a free data retrieval call binding the contract method 0xab9fc5ef. +// +// Solidity: function FORCE_BATCH_TIMEOUT() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) FORCEBATCHTIMEOUT() (uint64, error) { + return _Polygonzkevm.Contract.FORCEBATCHTIMEOUT(&_Polygonzkevm.CallOpts) +} + +// HALTAGGREGATIONTIMEOUT is a free data retrieval call binding the contract method 0x8b48931e. +// +// Solidity: function HALT_AGGREGATION_TIMEOUT() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) HALTAGGREGATIONTIMEOUT(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "HALT_AGGREGATION_TIMEOUT") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// HALTAGGREGATIONTIMEOUT is a free data retrieval call binding the contract method 0x8b48931e. +// +// Solidity: function HALT_AGGREGATION_TIMEOUT() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) HALTAGGREGATIONTIMEOUT() (uint64, error) { + return _Polygonzkevm.Contract.HALTAGGREGATIONTIMEOUT(&_Polygonzkevm.CallOpts) +} + +// HALTAGGREGATIONTIMEOUT is a free data retrieval call binding the contract method 0x8b48931e. +// +// Solidity: function HALT_AGGREGATION_TIMEOUT() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) HALTAGGREGATIONTIMEOUT() (uint64, error) { + return _Polygonzkevm.Contract.HALTAGGREGATIONTIMEOUT(&_Polygonzkevm.CallOpts) +} + +// MAXBATCHMULTIPLIER is a free data retrieval call binding the contract method 0x9eb831b9. +// +// Solidity: function MAX_BATCH_MULTIPLIER() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCaller) MAXBATCHMULTIPLIER(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "MAX_BATCH_MULTIPLIER") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXBATCHMULTIPLIER is a free data retrieval call binding the contract method 0x9eb831b9. +// +// Solidity: function MAX_BATCH_MULTIPLIER() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmSession) MAXBATCHMULTIPLIER() (*big.Int, error) { + return _Polygonzkevm.Contract.MAXBATCHMULTIPLIER(&_Polygonzkevm.CallOpts) +} + +// MAXBATCHMULTIPLIER is a free data retrieval call binding the contract method 0x9eb831b9. +// +// Solidity: function MAX_BATCH_MULTIPLIER() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCallerSession) MAXBATCHMULTIPLIER() (*big.Int, error) { + return _Polygonzkevm.Contract.MAXBATCHMULTIPLIER(&_Polygonzkevm.CallOpts) +} + +// MAXTRANSACTIONSBYTELENGTH is a free data retrieval call binding the contract method 0x2d0889d3. +// +// Solidity: function MAX_TRANSACTIONS_BYTE_LENGTH() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCaller) MAXTRANSACTIONSBYTELENGTH(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "MAX_TRANSACTIONS_BYTE_LENGTH") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXTRANSACTIONSBYTELENGTH is a free data retrieval call binding the contract method 0x2d0889d3. +// +// Solidity: function MAX_TRANSACTIONS_BYTE_LENGTH() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmSession) MAXTRANSACTIONSBYTELENGTH() (*big.Int, error) { + return _Polygonzkevm.Contract.MAXTRANSACTIONSBYTELENGTH(&_Polygonzkevm.CallOpts) +} + +// MAXTRANSACTIONSBYTELENGTH is a free data retrieval call binding the contract method 0x2d0889d3. +// +// Solidity: function MAX_TRANSACTIONS_BYTE_LENGTH() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCallerSession) MAXTRANSACTIONSBYTELENGTH() (*big.Int, error) { + return _Polygonzkevm.Contract.MAXTRANSACTIONSBYTELENGTH(&_Polygonzkevm.CallOpts) +} + +// MAXVERIFYBATCHES is a free data retrieval call binding the contract method 0xe217cfd6. +// +// Solidity: function MAX_VERIFY_BATCHES() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) MAXVERIFYBATCHES(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "MAX_VERIFY_BATCHES") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXVERIFYBATCHES is a free data retrieval call binding the contract method 0xe217cfd6. +// +// Solidity: function MAX_VERIFY_BATCHES() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) MAXVERIFYBATCHES() (uint64, error) { + return _Polygonzkevm.Contract.MAXVERIFYBATCHES(&_Polygonzkevm.CallOpts) +} + +// MAXVERIFYBATCHES is a free data retrieval call binding the contract method 0xe217cfd6. +// +// Solidity: function MAX_VERIFY_BATCHES() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) MAXVERIFYBATCHES() (uint64, error) { + return _Polygonzkevm.Contract.MAXVERIFYBATCHES(&_Polygonzkevm.CallOpts) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) Admin(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "admin") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) Admin() (common.Address, error) { + return _Polygonzkevm.Contract.Admin(&_Polygonzkevm.CallOpts) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) Admin() (common.Address, error) { + return _Polygonzkevm.Contract.Admin(&_Polygonzkevm.CallOpts) +} + +// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. +// +// Solidity: function batchFee() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCaller) BatchFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "batchFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. +// +// Solidity: function batchFee() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmSession) BatchFee() (*big.Int, error) { + return _Polygonzkevm.Contract.BatchFee(&_Polygonzkevm.CallOpts) +} + +// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. +// +// Solidity: function batchFee() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCallerSession) BatchFee() (*big.Int, error) { + return _Polygonzkevm.Contract.BatchFee(&_Polygonzkevm.CallOpts) +} + +// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. +// +// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) +func (_Polygonzkevm *PolygonzkevmCaller) BatchNumToStateRoot(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "batchNumToStateRoot", arg0) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. +// +// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) +func (_Polygonzkevm *PolygonzkevmSession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { + return _Polygonzkevm.Contract.BatchNumToStateRoot(&_Polygonzkevm.CallOpts, arg0) +} + +// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. +// +// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) +func (_Polygonzkevm *PolygonzkevmCallerSession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { + return _Polygonzkevm.Contract.BatchNumToStateRoot(&_Polygonzkevm.CallOpts, arg0) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "bridgeAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) BridgeAddress() (common.Address, error) { + return _Polygonzkevm.Contract.BridgeAddress(&_Polygonzkevm.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) BridgeAddress() (common.Address, error) { + return _Polygonzkevm.Contract.BridgeAddress(&_Polygonzkevm.CallOpts) +} + +// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. +// +// Solidity: function calculateRewardPerBatch() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCaller) CalculateRewardPerBatch(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "calculateRewardPerBatch") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. +// +// Solidity: function calculateRewardPerBatch() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmSession) CalculateRewardPerBatch() (*big.Int, error) { + return _Polygonzkevm.Contract.CalculateRewardPerBatch(&_Polygonzkevm.CallOpts) +} + +// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. +// +// Solidity: function calculateRewardPerBatch() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCallerSession) CalculateRewardPerBatch() (*big.Int, error) { + return _Polygonzkevm.Contract.CalculateRewardPerBatch(&_Polygonzkevm.CallOpts) +} + +// ChainID is a free data retrieval call binding the contract method 0xadc879e9. +// +// Solidity: function chainID() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) ChainID(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "chainID") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ChainID is a free data retrieval call binding the contract method 0xadc879e9. +// +// Solidity: function chainID() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) ChainID() (uint64, error) { + return _Polygonzkevm.Contract.ChainID(&_Polygonzkevm.CallOpts) +} + +// ChainID is a free data retrieval call binding the contract method 0xadc879e9. +// +// Solidity: function chainID() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) ChainID() (uint64, error) { + return _Polygonzkevm.Contract.ChainID(&_Polygonzkevm.CallOpts) +} + +// ForceBatchAllowed is a free data retrieval call binding the contract method 0xd8f54db0. +// +// Solidity: function forceBatchAllowed() view returns(bool) +func (_Polygonzkevm *PolygonzkevmCaller) ForceBatchAllowed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "forceBatchAllowed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ForceBatchAllowed is a free data retrieval call binding the contract method 0xd8f54db0. +// +// Solidity: function forceBatchAllowed() view returns(bool) +func (_Polygonzkevm *PolygonzkevmSession) ForceBatchAllowed() (bool, error) { + return _Polygonzkevm.Contract.ForceBatchAllowed(&_Polygonzkevm.CallOpts) +} + +// ForceBatchAllowed is a free data retrieval call binding the contract method 0xd8f54db0. +// +// Solidity: function forceBatchAllowed() view returns(bool) +func (_Polygonzkevm *PolygonzkevmCallerSession) ForceBatchAllowed() (bool, error) { + return _Polygonzkevm.Contract.ForceBatchAllowed(&_Polygonzkevm.CallOpts) +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Polygonzkevm *PolygonzkevmCaller) ForcedBatches(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "forcedBatches", arg0) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Polygonzkevm *PolygonzkevmSession) ForcedBatches(arg0 uint64) ([32]byte, error) { + return _Polygonzkevm.Contract.ForcedBatches(&_Polygonzkevm.CallOpts, arg0) +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Polygonzkevm *PolygonzkevmCallerSession) ForcedBatches(arg0 uint64) ([32]byte, error) { + return _Polygonzkevm.Contract.ForcedBatches(&_Polygonzkevm.CallOpts, arg0) +} + +// GetCurrentBatchFee is a free data retrieval call binding the contract method 0x9f0d039d. +// +// Solidity: function getCurrentBatchFee() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCaller) GetCurrentBatchFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "getCurrentBatchFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetCurrentBatchFee is a free data retrieval call binding the contract method 0x9f0d039d. +// +// Solidity: function getCurrentBatchFee() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmSession) GetCurrentBatchFee() (*big.Int, error) { + return _Polygonzkevm.Contract.GetCurrentBatchFee(&_Polygonzkevm.CallOpts) +} + +// GetCurrentBatchFee is a free data retrieval call binding the contract method 0x9f0d039d. +// +// Solidity: function getCurrentBatchFee() view returns(uint256) +func (_Polygonzkevm *PolygonzkevmCallerSession) GetCurrentBatchFee() (*big.Int, error) { + return _Polygonzkevm.Contract.GetCurrentBatchFee(&_Polygonzkevm.CallOpts) +} + +// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. +// +// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) +func (_Polygonzkevm *PolygonzkevmCaller) GetInputSnarkBytes(opts *bind.CallOpts, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "getInputSnarkBytes", initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. +// +// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) +func (_Polygonzkevm *PolygonzkevmSession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { + return _Polygonzkevm.Contract.GetInputSnarkBytes(&_Polygonzkevm.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) +} + +// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. +// +// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) +func (_Polygonzkevm *PolygonzkevmCallerSession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { + return _Polygonzkevm.Contract.GetInputSnarkBytes(&_Polygonzkevm.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) +} + +// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. +// +// Solidity: function getLastVerifiedBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) GetLastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "getLastVerifiedBatch") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. +// +// Solidity: function getLastVerifiedBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) GetLastVerifiedBatch() (uint64, error) { + return _Polygonzkevm.Contract.GetLastVerifiedBatch(&_Polygonzkevm.CallOpts) +} + +// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. +// +// Solidity: function getLastVerifiedBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) GetLastVerifiedBatch() (uint64, error) { + return _Polygonzkevm.Contract.GetLastVerifiedBatch(&_Polygonzkevm.CallOpts) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "globalExitRootManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) GlobalExitRootManager() (common.Address, error) { + return _Polygonzkevm.Contract.GlobalExitRootManager(&_Polygonzkevm.CallOpts) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) GlobalExitRootManager() (common.Address, error) { + return _Polygonzkevm.Contract.GlobalExitRootManager(&_Polygonzkevm.CallOpts) +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Polygonzkevm *PolygonzkevmCaller) IsEmergencyState(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "isEmergencyState") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Polygonzkevm *PolygonzkevmSession) IsEmergencyState() (bool, error) { + return _Polygonzkevm.Contract.IsEmergencyState(&_Polygonzkevm.CallOpts) +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Polygonzkevm *PolygonzkevmCallerSession) IsEmergencyState() (bool, error) { + return _Polygonzkevm.Contract.IsEmergencyState(&_Polygonzkevm.CallOpts) +} + +// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. +// +// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) +func (_Polygonzkevm *PolygonzkevmCaller) IsPendingStateConsolidable(opts *bind.CallOpts, pendingStateNum uint64) (bool, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "isPendingStateConsolidable", pendingStateNum) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. +// +// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) +func (_Polygonzkevm *PolygonzkevmSession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { + return _Polygonzkevm.Contract.IsPendingStateConsolidable(&_Polygonzkevm.CallOpts, pendingStateNum) +} + +// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. +// +// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) +func (_Polygonzkevm *PolygonzkevmCallerSession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { + return _Polygonzkevm.Contract.IsPendingStateConsolidable(&_Polygonzkevm.CallOpts, pendingStateNum) +} + +// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. +// +// Solidity: function lastBatchSequenced() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) LastBatchSequenced(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "lastBatchSequenced") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. +// +// Solidity: function lastBatchSequenced() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) LastBatchSequenced() (uint64, error) { + return _Polygonzkevm.Contract.LastBatchSequenced(&_Polygonzkevm.CallOpts) +} + +// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. +// +// Solidity: function lastBatchSequenced() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) LastBatchSequenced() (uint64, error) { + return _Polygonzkevm.Contract.LastBatchSequenced(&_Polygonzkevm.CallOpts) +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) LastForceBatch(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "lastForceBatch") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) LastForceBatch() (uint64, error) { + return _Polygonzkevm.Contract.LastForceBatch(&_Polygonzkevm.CallOpts) +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) LastForceBatch() (uint64, error) { + return _Polygonzkevm.Contract.LastForceBatch(&_Polygonzkevm.CallOpts) +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) LastForceBatchSequenced(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "lastForceBatchSequenced") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) LastForceBatchSequenced() (uint64, error) { + return _Polygonzkevm.Contract.LastForceBatchSequenced(&_Polygonzkevm.CallOpts) +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) LastForceBatchSequenced() (uint64, error) { + return _Polygonzkevm.Contract.LastForceBatchSequenced(&_Polygonzkevm.CallOpts) +} + +// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. +// +// Solidity: function lastPendingState() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) LastPendingState(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "lastPendingState") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. +// +// Solidity: function lastPendingState() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) LastPendingState() (uint64, error) { + return _Polygonzkevm.Contract.LastPendingState(&_Polygonzkevm.CallOpts) +} + +// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. +// +// Solidity: function lastPendingState() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) LastPendingState() (uint64, error) { + return _Polygonzkevm.Contract.LastPendingState(&_Polygonzkevm.CallOpts) +} + +// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. +// +// Solidity: function lastPendingStateConsolidated() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) LastPendingStateConsolidated(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "lastPendingStateConsolidated") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. +// +// Solidity: function lastPendingStateConsolidated() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) LastPendingStateConsolidated() (uint64, error) { + return _Polygonzkevm.Contract.LastPendingStateConsolidated(&_Polygonzkevm.CallOpts) +} + +// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. +// +// Solidity: function lastPendingStateConsolidated() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) LastPendingStateConsolidated() (uint64, error) { + return _Polygonzkevm.Contract.LastPendingStateConsolidated(&_Polygonzkevm.CallOpts) +} + +// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. +// +// Solidity: function lastTimestamp() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) LastTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "lastTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. +// +// Solidity: function lastTimestamp() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) LastTimestamp() (uint64, error) { + return _Polygonzkevm.Contract.LastTimestamp(&_Polygonzkevm.CallOpts) +} + +// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. +// +// Solidity: function lastTimestamp() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) LastTimestamp() (uint64, error) { + return _Polygonzkevm.Contract.LastTimestamp(&_Polygonzkevm.CallOpts) +} + +// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. +// +// Solidity: function lastVerifiedBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) LastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "lastVerifiedBatch") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. +// +// Solidity: function lastVerifiedBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) LastVerifiedBatch() (uint64, error) { + return _Polygonzkevm.Contract.LastVerifiedBatch(&_Polygonzkevm.CallOpts) +} + +// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. +// +// Solidity: function lastVerifiedBatch() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) LastVerifiedBatch() (uint64, error) { + return _Polygonzkevm.Contract.LastVerifiedBatch(&_Polygonzkevm.CallOpts) +} + +// Matic is a free data retrieval call binding the contract method 0xb6b0b097. +// +// Solidity: function matic() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) Matic(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "matic") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Matic is a free data retrieval call binding the contract method 0xb6b0b097. +// +// Solidity: function matic() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) Matic() (common.Address, error) { + return _Polygonzkevm.Contract.Matic(&_Polygonzkevm.CallOpts) +} + +// Matic is a free data retrieval call binding the contract method 0xb6b0b097. +// +// Solidity: function matic() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) Matic() (common.Address, error) { + return _Polygonzkevm.Contract.Matic(&_Polygonzkevm.CallOpts) +} + +// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. +// +// Solidity: function multiplierBatchFee() view returns(uint16) +func (_Polygonzkevm *PolygonzkevmCaller) MultiplierBatchFee(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "multiplierBatchFee") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. +// +// Solidity: function multiplierBatchFee() view returns(uint16) +func (_Polygonzkevm *PolygonzkevmSession) MultiplierBatchFee() (uint16, error) { + return _Polygonzkevm.Contract.MultiplierBatchFee(&_Polygonzkevm.CallOpts) +} + +// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. +// +// Solidity: function multiplierBatchFee() view returns(uint16) +func (_Polygonzkevm *PolygonzkevmCallerSession) MultiplierBatchFee() (uint16, error) { + return _Polygonzkevm.Contract.MultiplierBatchFee(&_Polygonzkevm.CallOpts) +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Polygonzkevm *PolygonzkevmCaller) NetworkName(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "networkName") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Polygonzkevm *PolygonzkevmSession) NetworkName() (string, error) { + return _Polygonzkevm.Contract.NetworkName(&_Polygonzkevm.CallOpts) +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Polygonzkevm *PolygonzkevmCallerSession) NetworkName() (string, error) { + return _Polygonzkevm.Contract.NetworkName(&_Polygonzkevm.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) Owner() (common.Address, error) { + return _Polygonzkevm.Contract.Owner(&_Polygonzkevm.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) Owner() (common.Address, error) { + return _Polygonzkevm.Contract.Owner(&_Polygonzkevm.CallOpts) +} + +// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. +// +// Solidity: function pendingStateTimeout() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) PendingStateTimeout(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "pendingStateTimeout") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. +// +// Solidity: function pendingStateTimeout() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) PendingStateTimeout() (uint64, error) { + return _Polygonzkevm.Contract.PendingStateTimeout(&_Polygonzkevm.CallOpts) +} + +// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. +// +// Solidity: function pendingStateTimeout() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) PendingStateTimeout() (uint64, error) { + return _Polygonzkevm.Contract.PendingStateTimeout(&_Polygonzkevm.CallOpts) +} + +// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. +// +// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) +func (_Polygonzkevm *PolygonzkevmCaller) PendingStateTransitions(opts *bind.CallOpts, arg0 *big.Int) (struct { + Timestamp uint64 + LastVerifiedBatch uint64 + ExitRoot [32]byte + StateRoot [32]byte +}, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "pendingStateTransitions", arg0) + + outstruct := new(struct { + Timestamp uint64 + LastVerifiedBatch uint64 + ExitRoot [32]byte + StateRoot [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.Timestamp = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.LastVerifiedBatch = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.ExitRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + outstruct.StateRoot = *abi.ConvertType(out[3], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. +// +// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) +func (_Polygonzkevm *PolygonzkevmSession) PendingStateTransitions(arg0 *big.Int) (struct { + Timestamp uint64 + LastVerifiedBatch uint64 + ExitRoot [32]byte + StateRoot [32]byte +}, error) { + return _Polygonzkevm.Contract.PendingStateTransitions(&_Polygonzkevm.CallOpts, arg0) +} + +// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. +// +// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) +func (_Polygonzkevm *PolygonzkevmCallerSession) PendingStateTransitions(arg0 *big.Int) (struct { + Timestamp uint64 + LastVerifiedBatch uint64 + ExitRoot [32]byte + StateRoot [32]byte +}, error) { + return _Polygonzkevm.Contract.PendingStateTransitions(&_Polygonzkevm.CallOpts, arg0) +} + +// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. +// +// Solidity: function rollupVerifier() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) RollupVerifier(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "rollupVerifier") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. +// +// Solidity: function rollupVerifier() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) RollupVerifier() (common.Address, error) { + return _Polygonzkevm.Contract.RollupVerifier(&_Polygonzkevm.CallOpts) +} + +// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. +// +// Solidity: function rollupVerifier() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) RollupVerifier() (common.Address, error) { + return _Polygonzkevm.Contract.RollupVerifier(&_Polygonzkevm.CallOpts) +} + +// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. +// +// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) +func (_Polygonzkevm *PolygonzkevmCaller) SequencedBatches(opts *bind.CallOpts, arg0 uint64) (struct { + AccInputHash [32]byte + SequencedTimestamp uint64 + PreviousLastBatchSequenced uint64 +}, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "sequencedBatches", arg0) + + outstruct := new(struct { + AccInputHash [32]byte + SequencedTimestamp uint64 + PreviousLastBatchSequenced uint64 + }) + if err != nil { + return *outstruct, err + } + + outstruct.AccInputHash = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.SequencedTimestamp = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.PreviousLastBatchSequenced = *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return *outstruct, err + +} + +// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. +// +// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) +func (_Polygonzkevm *PolygonzkevmSession) SequencedBatches(arg0 uint64) (struct { + AccInputHash [32]byte + SequencedTimestamp uint64 + PreviousLastBatchSequenced uint64 +}, error) { + return _Polygonzkevm.Contract.SequencedBatches(&_Polygonzkevm.CallOpts, arg0) +} + +// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. +// +// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) +func (_Polygonzkevm *PolygonzkevmCallerSession) SequencedBatches(arg0 uint64) (struct { + AccInputHash [32]byte + SequencedTimestamp uint64 + PreviousLastBatchSequenced uint64 +}, error) { + return _Polygonzkevm.Contract.SequencedBatches(&_Polygonzkevm.CallOpts, arg0) +} + +// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. +// +// Solidity: function trustedAggregator() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) TrustedAggregator(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "trustedAggregator") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. +// +// Solidity: function trustedAggregator() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) TrustedAggregator() (common.Address, error) { + return _Polygonzkevm.Contract.TrustedAggregator(&_Polygonzkevm.CallOpts) +} + +// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. +// +// Solidity: function trustedAggregator() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) TrustedAggregator() (common.Address, error) { + return _Polygonzkevm.Contract.TrustedAggregator(&_Polygonzkevm.CallOpts) +} + +// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. +// +// Solidity: function trustedAggregatorTimeout() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) TrustedAggregatorTimeout(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "trustedAggregatorTimeout") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. +// +// Solidity: function trustedAggregatorTimeout() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) TrustedAggregatorTimeout() (uint64, error) { + return _Polygonzkevm.Contract.TrustedAggregatorTimeout(&_Polygonzkevm.CallOpts) +} + +// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. +// +// Solidity: function trustedAggregatorTimeout() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) TrustedAggregatorTimeout() (uint64, error) { + return _Polygonzkevm.Contract.TrustedAggregatorTimeout(&_Polygonzkevm.CallOpts) +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Polygonzkevm *PolygonzkevmCaller) TrustedSequencer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "trustedSequencer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Polygonzkevm *PolygonzkevmSession) TrustedSequencer() (common.Address, error) { + return _Polygonzkevm.Contract.TrustedSequencer(&_Polygonzkevm.CallOpts) +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Polygonzkevm *PolygonzkevmCallerSession) TrustedSequencer() (common.Address, error) { + return _Polygonzkevm.Contract.TrustedSequencer(&_Polygonzkevm.CallOpts) +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Polygonzkevm *PolygonzkevmCaller) TrustedSequencerURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "trustedSequencerURL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Polygonzkevm *PolygonzkevmSession) TrustedSequencerURL() (string, error) { + return _Polygonzkevm.Contract.TrustedSequencerURL(&_Polygonzkevm.CallOpts) +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Polygonzkevm *PolygonzkevmCallerSession) TrustedSequencerURL() (string, error) { + return _Polygonzkevm.Contract.TrustedSequencerURL(&_Polygonzkevm.CallOpts) +} + +// VeryBatchTimeTarget is a free data retrieval call binding the contract method 0xaa58bad6. +// +// Solidity: function veryBatchTimeTarget() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCaller) VeryBatchTimeTarget(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonzkevm.contract.Call(opts, &out, "veryBatchTimeTarget") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// VeryBatchTimeTarget is a free data retrieval call binding the contract method 0xaa58bad6. +// +// Solidity: function veryBatchTimeTarget() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmSession) VeryBatchTimeTarget() (uint64, error) { + return _Polygonzkevm.Contract.VeryBatchTimeTarget(&_Polygonzkevm.CallOpts) +} + +// VeryBatchTimeTarget is a free data retrieval call binding the contract method 0xaa58bad6. +// +// Solidity: function veryBatchTimeTarget() view returns(uint64) +func (_Polygonzkevm *PolygonzkevmCallerSession) VeryBatchTimeTarget() (uint64, error) { + return _Polygonzkevm.Contract.VeryBatchTimeTarget(&_Polygonzkevm.CallOpts) +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. +// +// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) ActivateEmergencyState(opts *bind.TransactOpts, sequencedBatchNum uint64) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "activateEmergencyState", sequencedBatchNum) +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. +// +// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() +func (_Polygonzkevm *PolygonzkevmSession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ActivateEmergencyState(&_Polygonzkevm.TransactOpts, sequencedBatchNum) +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. +// +// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ActivateEmergencyState(&_Polygonzkevm.TransactOpts, sequencedBatchNum) +} + +// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. +// +// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) ConsolidatePendingState(opts *bind.TransactOpts, pendingStateNum uint64) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "consolidatePendingState", pendingStateNum) +} + +// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. +// +// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() +func (_Polygonzkevm *PolygonzkevmSession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ConsolidatePendingState(&_Polygonzkevm.TransactOpts, pendingStateNum) +} + +// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. +// +// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ConsolidatePendingState(&_Polygonzkevm.TransactOpts, pendingStateNum) +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Polygonzkevm *PolygonzkevmTransactor) DeactivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "deactivateEmergencyState") +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Polygonzkevm *PolygonzkevmSession) DeactivateEmergencyState() (*types.Transaction, error) { + return _Polygonzkevm.Contract.DeactivateEmergencyState(&_Polygonzkevm.TransactOpts) +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) DeactivateEmergencyState() (*types.Transaction, error) { + return _Polygonzkevm.Contract.DeactivateEmergencyState(&_Polygonzkevm.TransactOpts) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) ForceBatch(opts *bind.TransactOpts, transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "forceBatch", transactions, maticAmount) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() +func (_Polygonzkevm *PolygonzkevmSession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ForceBatch(&_Polygonzkevm.TransactOpts, transactions, maticAmount) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ForceBatch(&_Polygonzkevm.TransactOpts, transactions, maticAmount) +} + +// Initialize is a paid mutator transaction binding the contract method 0x60943d6a. +// +// Solidity: function initialize(address _globalExitRootManager, address _matic, address _rollupVerifier, address _bridgeAddress, (address,uint64,address,uint64,bool,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) Initialize(opts *bind.TransactOpts, _globalExitRootManager common.Address, _matic common.Address, _rollupVerifier common.Address, _bridgeAddress common.Address, initializePackedParameters PolygonZkEVMInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "initialize", _globalExitRootManager, _matic, _rollupVerifier, _bridgeAddress, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName) +} + +// Initialize is a paid mutator transaction binding the contract method 0x60943d6a. +// +// Solidity: function initialize(address _globalExitRootManager, address _matic, address _rollupVerifier, address _bridgeAddress, (address,uint64,address,uint64,bool,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName) returns() +func (_Polygonzkevm *PolygonzkevmSession) Initialize(_globalExitRootManager common.Address, _matic common.Address, _rollupVerifier common.Address, _bridgeAddress common.Address, initializePackedParameters PolygonZkEVMInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string) (*types.Transaction, error) { + return _Polygonzkevm.Contract.Initialize(&_Polygonzkevm.TransactOpts, _globalExitRootManager, _matic, _rollupVerifier, _bridgeAddress, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName) +} + +// Initialize is a paid mutator transaction binding the contract method 0x60943d6a. +// +// Solidity: function initialize(address _globalExitRootManager, address _matic, address _rollupVerifier, address _bridgeAddress, (address,uint64,address,uint64,bool,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) Initialize(_globalExitRootManager common.Address, _matic common.Address, _rollupVerifier common.Address, _bridgeAddress common.Address, initializePackedParameters PolygonZkEVMInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string) (*types.Transaction, error) { + return _Polygonzkevm.Contract.Initialize(&_Polygonzkevm.TransactOpts, _globalExitRootManager, _matic, _rollupVerifier, _bridgeAddress, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName) +} + +// OverridePendingState is a paid mutator transaction binding the contract method 0xe11f3f18. +// +// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) OverridePendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "overridePendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// OverridePendingState is a paid mutator transaction binding the contract method 0xe11f3f18. +// +// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmSession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.OverridePendingState(&_Polygonzkevm.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// OverridePendingState is a paid mutator transaction binding the contract method 0xe11f3f18. +// +// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.OverridePendingState(&_Polygonzkevm.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x75c508b3. +// +// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) ProveNonDeterministicPendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "proveNonDeterministicPendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x75c508b3. +// +// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmSession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ProveNonDeterministicPendingState(&_Polygonzkevm.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x75c508b3. +// +// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.ProveNonDeterministicPendingState(&_Polygonzkevm.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Polygonzkevm *PolygonzkevmTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Polygonzkevm *PolygonzkevmSession) RenounceOwnership() (*types.Transaction, error) { + return _Polygonzkevm.Contract.RenounceOwnership(&_Polygonzkevm.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Polygonzkevm.Contract.RenounceOwnership(&_Polygonzkevm.TransactOpts) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0x3c158267. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SequenceBatches(opts *bind.TransactOpts, batches []PolygonZkEVMBatchData) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "sequenceBatches", batches) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0x3c158267. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches) returns() +func (_Polygonzkevm *PolygonzkevmSession) SequenceBatches(batches []PolygonZkEVMBatchData) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SequenceBatches(&_Polygonzkevm.TransactOpts, batches) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0x3c158267. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SequenceBatches(batches []PolygonZkEVMBatchData) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SequenceBatches(&_Polygonzkevm.TransactOpts, batches) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SequenceForceBatches(opts *bind.TransactOpts, batches []PolygonZkEVMForcedBatchData) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "sequenceForceBatches", batches) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() +func (_Polygonzkevm *PolygonzkevmSession) SequenceForceBatches(batches []PolygonZkEVMForcedBatchData) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SequenceForceBatches(&_Polygonzkevm.TransactOpts, batches) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SequenceForceBatches(batches []PolygonZkEVMForcedBatchData) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SequenceForceBatches(&_Polygonzkevm.TransactOpts, batches) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address newAdmin) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetAdmin(opts *bind.TransactOpts, newAdmin common.Address) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setAdmin", newAdmin) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address newAdmin) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetAdmin(newAdmin common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetAdmin(&_Polygonzkevm.TransactOpts, newAdmin) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address newAdmin) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetAdmin(newAdmin common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetAdmin(&_Polygonzkevm.TransactOpts, newAdmin) +} + +// SetForceBatchAllowed is a paid mutator transaction binding the contract method 0x8c4a0af7. +// +// Solidity: function setForceBatchAllowed(bool newForceBatchAllowed) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetForceBatchAllowed(opts *bind.TransactOpts, newForceBatchAllowed bool) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setForceBatchAllowed", newForceBatchAllowed) +} + +// SetForceBatchAllowed is a paid mutator transaction binding the contract method 0x8c4a0af7. +// +// Solidity: function setForceBatchAllowed(bool newForceBatchAllowed) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetForceBatchAllowed(newForceBatchAllowed bool) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetForceBatchAllowed(&_Polygonzkevm.TransactOpts, newForceBatchAllowed) +} + +// SetForceBatchAllowed is a paid mutator transaction binding the contract method 0x8c4a0af7. +// +// Solidity: function setForceBatchAllowed(bool newForceBatchAllowed) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetForceBatchAllowed(newForceBatchAllowed bool) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetForceBatchAllowed(&_Polygonzkevm.TransactOpts, newForceBatchAllowed) +} + +// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. +// +// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetMultiplierBatchFee(opts *bind.TransactOpts, newMultiplierBatchFee uint16) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setMultiplierBatchFee", newMultiplierBatchFee) +} + +// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. +// +// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetMultiplierBatchFee(&_Polygonzkevm.TransactOpts, newMultiplierBatchFee) +} + +// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. +// +// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetMultiplierBatchFee(&_Polygonzkevm.TransactOpts, newMultiplierBatchFee) +} + +// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. +// +// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetPendingStateTimeout(opts *bind.TransactOpts, newPendingStateTimeout uint64) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setPendingStateTimeout", newPendingStateTimeout) +} + +// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. +// +// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetPendingStateTimeout(&_Polygonzkevm.TransactOpts, newPendingStateTimeout) +} + +// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. +// +// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetPendingStateTimeout(&_Polygonzkevm.TransactOpts, newPendingStateTimeout) +} + +// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. +// +// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetTrustedAggregator(opts *bind.TransactOpts, newTrustedAggregator common.Address) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setTrustedAggregator", newTrustedAggregator) +} + +// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. +// +// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedAggregator(&_Polygonzkevm.TransactOpts, newTrustedAggregator) +} + +// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. +// +// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedAggregator(&_Polygonzkevm.TransactOpts, newTrustedAggregator) +} + +// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. +// +// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetTrustedAggregatorTimeout(opts *bind.TransactOpts, newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setTrustedAggregatorTimeout", newTrustedAggregatorTimeout) +} + +// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. +// +// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedAggregatorTimeout(&_Polygonzkevm.TransactOpts, newTrustedAggregatorTimeout) +} + +// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. +// +// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedAggregatorTimeout(&_Polygonzkevm.TransactOpts, newTrustedAggregatorTimeout) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetTrustedSequencer(opts *bind.TransactOpts, newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setTrustedSequencer", newTrustedSequencer) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedSequencer(&_Polygonzkevm.TransactOpts, newTrustedSequencer) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedSequencer(&_Polygonzkevm.TransactOpts, newTrustedSequencer) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetTrustedSequencerURL(opts *bind.TransactOpts, newTrustedSequencerURL string) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setTrustedSequencerURL", newTrustedSequencerURL) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedSequencerURL(&_Polygonzkevm.TransactOpts, newTrustedSequencerURL) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetTrustedSequencerURL(&_Polygonzkevm.TransactOpts, newTrustedSequencerURL) +} + +// SetVeryBatchTimeTarget is a paid mutator transaction binding the contract method 0xcf136306. +// +// Solidity: function setVeryBatchTimeTarget(uint64 newVeryBatchTimeTarget) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) SetVeryBatchTimeTarget(opts *bind.TransactOpts, newVeryBatchTimeTarget uint64) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "setVeryBatchTimeTarget", newVeryBatchTimeTarget) +} + +// SetVeryBatchTimeTarget is a paid mutator transaction binding the contract method 0xcf136306. +// +// Solidity: function setVeryBatchTimeTarget(uint64 newVeryBatchTimeTarget) returns() +func (_Polygonzkevm *PolygonzkevmSession) SetVeryBatchTimeTarget(newVeryBatchTimeTarget uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetVeryBatchTimeTarget(&_Polygonzkevm.TransactOpts, newVeryBatchTimeTarget) +} + +// SetVeryBatchTimeTarget is a paid mutator transaction binding the contract method 0xcf136306. +// +// Solidity: function setVeryBatchTimeTarget(uint64 newVeryBatchTimeTarget) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) SetVeryBatchTimeTarget(newVeryBatchTimeTarget uint64) (*types.Transaction, error) { + return _Polygonzkevm.Contract.SetVeryBatchTimeTarget(&_Polygonzkevm.TransactOpts, newVeryBatchTimeTarget) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Polygonzkevm *PolygonzkevmSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.TransferOwnership(&_Polygonzkevm.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Polygonzkevm.Contract.TransferOwnership(&_Polygonzkevm.TransactOpts, newOwner) +} + +// TrustedVerifyBatches is a paid mutator transaction binding the contract method 0xedc41121. +// +// Solidity: function trustedVerifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) TrustedVerifyBatches(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "trustedVerifyBatches", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// TrustedVerifyBatches is a paid mutator transaction binding the contract method 0xedc41121. +// +// Solidity: function trustedVerifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmSession) TrustedVerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.TrustedVerifyBatches(&_Polygonzkevm.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// TrustedVerifyBatches is a paid mutator transaction binding the contract method 0xedc41121. +// +// Solidity: function trustedVerifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) TrustedVerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.TrustedVerifyBatches(&_Polygonzkevm.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// VerifyBatches is a paid mutator transaction binding the contract method 0x4834a343. +// +// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactor) VerifyBatches(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.contract.Transact(opts, "verifyBatches", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// VerifyBatches is a paid mutator transaction binding the contract method 0x4834a343. +// +// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmSession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.VerifyBatches(&_Polygonzkevm.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// VerifyBatches is a paid mutator transaction binding the contract method 0x4834a343. +// +// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() +func (_Polygonzkevm *PolygonzkevmTransactorSession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { + return _Polygonzkevm.Contract.VerifyBatches(&_Polygonzkevm.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) +} + +// PolygonzkevmConsolidatePendingStateIterator is returned from FilterConsolidatePendingState and is used to iterate over the raw logs and unpacked data for ConsolidatePendingState events raised by the Polygonzkevm contract. +type PolygonzkevmConsolidatePendingStateIterator struct { + Event *PolygonzkevmConsolidatePendingState // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmConsolidatePendingStateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmConsolidatePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmConsolidatePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmConsolidatePendingStateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmConsolidatePendingStateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmConsolidatePendingState represents a ConsolidatePendingState event raised by the Polygonzkevm contract. +type PolygonzkevmConsolidatePendingState struct { + NumBatch uint64 + StateRoot [32]byte + PendingStateNum uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConsolidatePendingState is a free log retrieval operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. +// +// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterConsolidatePendingState(opts *bind.FilterOpts, numBatch []uint64, pendingStateNum []uint64) (*PolygonzkevmConsolidatePendingStateIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var pendingStateNumRule []interface{} + for _, pendingStateNumItem := range pendingStateNum { + pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) + if err != nil { + return nil, err + } + return &PolygonzkevmConsolidatePendingStateIterator{contract: _Polygonzkevm.contract, event: "ConsolidatePendingState", logs: logs, sub: sub}, nil +} + +// WatchConsolidatePendingState is a free log subscription operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. +// +// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchConsolidatePendingState(opts *bind.WatchOpts, sink chan<- *PolygonzkevmConsolidatePendingState, numBatch []uint64, pendingStateNum []uint64) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var pendingStateNumRule []interface{} + for _, pendingStateNumItem := range pendingStateNum { + pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmConsolidatePendingState) + if err := _Polygonzkevm.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConsolidatePendingState is a log parse operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. +// +// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseConsolidatePendingState(log types.Log) (*PolygonzkevmConsolidatePendingState, error) { + event := new(PolygonzkevmConsolidatePendingState) + if err := _Polygonzkevm.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmEmergencyStateActivatedIterator is returned from FilterEmergencyStateActivated and is used to iterate over the raw logs and unpacked data for EmergencyStateActivated events raised by the Polygonzkevm contract. +type PolygonzkevmEmergencyStateActivatedIterator struct { + Event *PolygonzkevmEmergencyStateActivated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmEmergencyStateActivatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmEmergencyStateActivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmEmergencyStateActivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmEmergencyStateActivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmEmergencyStateActivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmEmergencyStateActivated represents a EmergencyStateActivated event raised by the Polygonzkevm contract. +type PolygonzkevmEmergencyStateActivated struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEmergencyStateActivated is a free log retrieval operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Polygonzkevm *PolygonzkevmFilterer) FilterEmergencyStateActivated(opts *bind.FilterOpts) (*PolygonzkevmEmergencyStateActivatedIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "EmergencyStateActivated") + if err != nil { + return nil, err + } + return &PolygonzkevmEmergencyStateActivatedIterator{contract: _Polygonzkevm.contract, event: "EmergencyStateActivated", logs: logs, sub: sub}, nil +} + +// WatchEmergencyStateActivated is a free log subscription operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Polygonzkevm *PolygonzkevmFilterer) WatchEmergencyStateActivated(opts *bind.WatchOpts, sink chan<- *PolygonzkevmEmergencyStateActivated) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "EmergencyStateActivated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmEmergencyStateActivated) + if err := _Polygonzkevm.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEmergencyStateActivated is a log parse operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Polygonzkevm *PolygonzkevmFilterer) ParseEmergencyStateActivated(log types.Log) (*PolygonzkevmEmergencyStateActivated, error) { + event := new(PolygonzkevmEmergencyStateActivated) + if err := _Polygonzkevm.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmEmergencyStateDeactivatedIterator is returned from FilterEmergencyStateDeactivated and is used to iterate over the raw logs and unpacked data for EmergencyStateDeactivated events raised by the Polygonzkevm contract. +type PolygonzkevmEmergencyStateDeactivatedIterator struct { + Event *PolygonzkevmEmergencyStateDeactivated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmEmergencyStateDeactivatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmEmergencyStateDeactivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmEmergencyStateDeactivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmEmergencyStateDeactivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmEmergencyStateDeactivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmEmergencyStateDeactivated represents a EmergencyStateDeactivated event raised by the Polygonzkevm contract. +type PolygonzkevmEmergencyStateDeactivated struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEmergencyStateDeactivated is a free log retrieval operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Polygonzkevm *PolygonzkevmFilterer) FilterEmergencyStateDeactivated(opts *bind.FilterOpts) (*PolygonzkevmEmergencyStateDeactivatedIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "EmergencyStateDeactivated") + if err != nil { + return nil, err + } + return &PolygonzkevmEmergencyStateDeactivatedIterator{contract: _Polygonzkevm.contract, event: "EmergencyStateDeactivated", logs: logs, sub: sub}, nil +} + +// WatchEmergencyStateDeactivated is a free log subscription operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Polygonzkevm *PolygonzkevmFilterer) WatchEmergencyStateDeactivated(opts *bind.WatchOpts, sink chan<- *PolygonzkevmEmergencyStateDeactivated) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "EmergencyStateDeactivated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmEmergencyStateDeactivated) + if err := _Polygonzkevm.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEmergencyStateDeactivated is a log parse operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Polygonzkevm *PolygonzkevmFilterer) ParseEmergencyStateDeactivated(log types.Log) (*PolygonzkevmEmergencyStateDeactivated, error) { + event := new(PolygonzkevmEmergencyStateDeactivated) + if err := _Polygonzkevm.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmForceBatchIterator is returned from FilterForceBatch and is used to iterate over the raw logs and unpacked data for ForceBatch events raised by the Polygonzkevm contract. +type PolygonzkevmForceBatchIterator struct { + Event *PolygonzkevmForceBatch // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmForceBatchIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmForceBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmForceBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmForceBatchIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmForceBatchIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmForceBatch represents a ForceBatch event raised by the Polygonzkevm contract. +type PolygonzkevmForceBatch struct { + ForceBatchNum uint64 + LastGlobalExitRoot [32]byte + Sequencer common.Address + Transactions []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterForceBatch is a free log retrieval operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterForceBatch(opts *bind.FilterOpts, forceBatchNum []uint64) (*PolygonzkevmForceBatchIterator, error) { + + var forceBatchNumRule []interface{} + for _, forceBatchNumItem := range forceBatchNum { + forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "ForceBatch", forceBatchNumRule) + if err != nil { + return nil, err + } + return &PolygonzkevmForceBatchIterator{contract: _Polygonzkevm.contract, event: "ForceBatch", logs: logs, sub: sub}, nil +} + +// WatchForceBatch is a free log subscription operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchForceBatch(opts *bind.WatchOpts, sink chan<- *PolygonzkevmForceBatch, forceBatchNum []uint64) (event.Subscription, error) { + + var forceBatchNumRule []interface{} + for _, forceBatchNumItem := range forceBatchNum { + forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "ForceBatch", forceBatchNumRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmForceBatch) + if err := _Polygonzkevm.contract.UnpackLog(event, "ForceBatch", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseForceBatch is a log parse operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseForceBatch(log types.Log) (*PolygonzkevmForceBatch, error) { + event := new(PolygonzkevmForceBatch) + if err := _Polygonzkevm.contract.UnpackLog(event, "ForceBatch", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Polygonzkevm contract. +type PolygonzkevmInitializedIterator struct { + Event *PolygonzkevmInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmInitialized represents a Initialized event raised by the Polygonzkevm contract. +type PolygonzkevmInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterInitialized(opts *bind.FilterOpts) (*PolygonzkevmInitializedIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PolygonzkevmInitializedIterator{contract: _Polygonzkevm.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PolygonzkevmInitialized) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmInitialized) + if err := _Polygonzkevm.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseInitialized(log types.Log) (*PolygonzkevmInitialized, error) { + event := new(PolygonzkevmInitialized) + if err := _Polygonzkevm.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmOverridePendingStateIterator is returned from FilterOverridePendingState and is used to iterate over the raw logs and unpacked data for OverridePendingState events raised by the Polygonzkevm contract. +type PolygonzkevmOverridePendingStateIterator struct { + Event *PolygonzkevmOverridePendingState // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmOverridePendingStateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmOverridePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmOverridePendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmOverridePendingStateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmOverridePendingStateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmOverridePendingState represents a OverridePendingState event raised by the Polygonzkevm contract. +type PolygonzkevmOverridePendingState struct { + NumBatch uint64 + StateRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOverridePendingState is a free log retrieval operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. +// +// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterOverridePendingState(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*PolygonzkevmOverridePendingStateIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return &PolygonzkevmOverridePendingStateIterator{contract: _Polygonzkevm.contract, event: "OverridePendingState", logs: logs, sub: sub}, nil +} + +// WatchOverridePendingState is a free log subscription operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. +// +// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchOverridePendingState(opts *bind.WatchOpts, sink chan<- *PolygonzkevmOverridePendingState, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmOverridePendingState) + if err := _Polygonzkevm.contract.UnpackLog(event, "OverridePendingState", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOverridePendingState is a log parse operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. +// +// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseOverridePendingState(log types.Log) (*PolygonzkevmOverridePendingState, error) { + event := new(PolygonzkevmOverridePendingState) + if err := _Polygonzkevm.contract.UnpackLog(event, "OverridePendingState", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Polygonzkevm contract. +type PolygonzkevmOwnershipTransferredIterator struct { + Event *PolygonzkevmOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmOwnershipTransferred represents a OwnershipTransferred event raised by the Polygonzkevm contract. +type PolygonzkevmOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PolygonzkevmOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &PolygonzkevmOwnershipTransferredIterator{contract: _Polygonzkevm.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PolygonzkevmOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmOwnershipTransferred) + if err := _Polygonzkevm.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseOwnershipTransferred(log types.Log) (*PolygonzkevmOwnershipTransferred, error) { + event := new(PolygonzkevmOwnershipTransferred) + if err := _Polygonzkevm.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmProveNonDeterministicPendingStateIterator is returned from FilterProveNonDeterministicPendingState and is used to iterate over the raw logs and unpacked data for ProveNonDeterministicPendingState events raised by the Polygonzkevm contract. +type PolygonzkevmProveNonDeterministicPendingStateIterator struct { + Event *PolygonzkevmProveNonDeterministicPendingState // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmProveNonDeterministicPendingStateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmProveNonDeterministicPendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmProveNonDeterministicPendingState) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmProveNonDeterministicPendingStateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmProveNonDeterministicPendingStateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmProveNonDeterministicPendingState represents a ProveNonDeterministicPendingState event raised by the Polygonzkevm contract. +type PolygonzkevmProveNonDeterministicPendingState struct { + StoredStateRoot [32]byte + ProvedStateRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProveNonDeterministicPendingState is a free log retrieval operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. +// +// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterProveNonDeterministicPendingState(opts *bind.FilterOpts) (*PolygonzkevmProveNonDeterministicPendingStateIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "ProveNonDeterministicPendingState") + if err != nil { + return nil, err + } + return &PolygonzkevmProveNonDeterministicPendingStateIterator{contract: _Polygonzkevm.contract, event: "ProveNonDeterministicPendingState", logs: logs, sub: sub}, nil +} + +// WatchProveNonDeterministicPendingState is a free log subscription operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. +// +// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchProveNonDeterministicPendingState(opts *bind.WatchOpts, sink chan<- *PolygonzkevmProveNonDeterministicPendingState) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "ProveNonDeterministicPendingState") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmProveNonDeterministicPendingState) + if err := _Polygonzkevm.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProveNonDeterministicPendingState is a log parse operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. +// +// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseProveNonDeterministicPendingState(log types.Log) (*PolygonzkevmProveNonDeterministicPendingState, error) { + event := new(PolygonzkevmProveNonDeterministicPendingState) + if err := _Polygonzkevm.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSequenceBatchesIterator is returned from FilterSequenceBatches and is used to iterate over the raw logs and unpacked data for SequenceBatches events raised by the Polygonzkevm contract. +type PolygonzkevmSequenceBatchesIterator struct { + Event *PolygonzkevmSequenceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSequenceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSequenceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSequenceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSequenceBatches represents a SequenceBatches event raised by the Polygonzkevm contract. +type PolygonzkevmSequenceBatches struct { + NumBatch uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSequenceBatches is a free log retrieval operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*PolygonzkevmSequenceBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SequenceBatches", numBatchRule) + if err != nil { + return nil, err + } + return &PolygonzkevmSequenceBatchesIterator{contract: _Polygonzkevm.contract, event: "SequenceBatches", logs: logs, sub: sub}, nil +} + +// WatchSequenceBatches is a free log subscription operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSequenceBatches(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSequenceBatches, numBatch []uint64) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SequenceBatches", numBatchRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSequenceBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "SequenceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSequenceBatches is a log parse operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSequenceBatches(log types.Log) (*PolygonzkevmSequenceBatches, error) { + event := new(PolygonzkevmSequenceBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "SequenceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSequenceForceBatchesIterator is returned from FilterSequenceForceBatches and is used to iterate over the raw logs and unpacked data for SequenceForceBatches events raised by the Polygonzkevm contract. +type PolygonzkevmSequenceForceBatchesIterator struct { + Event *PolygonzkevmSequenceForceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSequenceForceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSequenceForceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSequenceForceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSequenceForceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSequenceForceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSequenceForceBatches represents a SequenceForceBatches event raised by the Polygonzkevm contract. +type PolygonzkevmSequenceForceBatches struct { + NumBatch uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSequenceForceBatches is a free log retrieval operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSequenceForceBatches(opts *bind.FilterOpts, numBatch []uint64) (*PolygonzkevmSequenceForceBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SequenceForceBatches", numBatchRule) + if err != nil { + return nil, err + } + return &PolygonzkevmSequenceForceBatchesIterator{contract: _Polygonzkevm.contract, event: "SequenceForceBatches", logs: logs, sub: sub}, nil +} + +// WatchSequenceForceBatches is a free log subscription operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSequenceForceBatches(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSequenceForceBatches, numBatch []uint64) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SequenceForceBatches", numBatchRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSequenceForceBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSequenceForceBatches is a log parse operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSequenceForceBatches(log types.Log) (*PolygonzkevmSequenceForceBatches, error) { + event := new(PolygonzkevmSequenceForceBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetAdminIterator is returned from FilterSetAdmin and is used to iterate over the raw logs and unpacked data for SetAdmin events raised by the Polygonzkevm contract. +type PolygonzkevmSetAdminIterator struct { + Event *PolygonzkevmSetAdmin // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetAdminIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetAdmin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetAdmin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetAdminIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetAdminIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetAdmin represents a SetAdmin event raised by the Polygonzkevm contract. +type PolygonzkevmSetAdmin struct { + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetAdmin is a free log retrieval operation binding the contract event 0x5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1. +// +// Solidity: event SetAdmin(address newAdmin) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetAdmin(opts *bind.FilterOpts) (*PolygonzkevmSetAdminIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetAdmin") + if err != nil { + return nil, err + } + return &PolygonzkevmSetAdminIterator{contract: _Polygonzkevm.contract, event: "SetAdmin", logs: logs, sub: sub}, nil +} + +// WatchSetAdmin is a free log subscription operation binding the contract event 0x5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1. +// +// Solidity: event SetAdmin(address newAdmin) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetAdmin(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetAdmin) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetAdmin") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetAdmin) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetAdmin", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetAdmin is a log parse operation binding the contract event 0x5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1. +// +// Solidity: event SetAdmin(address newAdmin) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetAdmin(log types.Log) (*PolygonzkevmSetAdmin, error) { + event := new(PolygonzkevmSetAdmin) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetAdmin", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetForceBatchAllowedIterator is returned from FilterSetForceBatchAllowed and is used to iterate over the raw logs and unpacked data for SetForceBatchAllowed events raised by the Polygonzkevm contract. +type PolygonzkevmSetForceBatchAllowedIterator struct { + Event *PolygonzkevmSetForceBatchAllowed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetForceBatchAllowedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetForceBatchAllowed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetForceBatchAllowed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetForceBatchAllowedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetForceBatchAllowedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetForceBatchAllowed represents a SetForceBatchAllowed event raised by the Polygonzkevm contract. +type PolygonzkevmSetForceBatchAllowed struct { + NewForceBatchAllowed bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetForceBatchAllowed is a free log retrieval operation binding the contract event 0xbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6. +// +// Solidity: event SetForceBatchAllowed(bool newForceBatchAllowed) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetForceBatchAllowed(opts *bind.FilterOpts) (*PolygonzkevmSetForceBatchAllowedIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetForceBatchAllowed") + if err != nil { + return nil, err + } + return &PolygonzkevmSetForceBatchAllowedIterator{contract: _Polygonzkevm.contract, event: "SetForceBatchAllowed", logs: logs, sub: sub}, nil +} + +// WatchSetForceBatchAllowed is a free log subscription operation binding the contract event 0xbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6. +// +// Solidity: event SetForceBatchAllowed(bool newForceBatchAllowed) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetForceBatchAllowed(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetForceBatchAllowed) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetForceBatchAllowed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetForceBatchAllowed) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetForceBatchAllowed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetForceBatchAllowed is a log parse operation binding the contract event 0xbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6. +// +// Solidity: event SetForceBatchAllowed(bool newForceBatchAllowed) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetForceBatchAllowed(log types.Log) (*PolygonzkevmSetForceBatchAllowed, error) { + event := new(PolygonzkevmSetForceBatchAllowed) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetForceBatchAllowed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetMultiplierBatchFeeIterator is returned from FilterSetMultiplierBatchFee and is used to iterate over the raw logs and unpacked data for SetMultiplierBatchFee events raised by the Polygonzkevm contract. +type PolygonzkevmSetMultiplierBatchFeeIterator struct { + Event *PolygonzkevmSetMultiplierBatchFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetMultiplierBatchFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetMultiplierBatchFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetMultiplierBatchFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetMultiplierBatchFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetMultiplierBatchFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetMultiplierBatchFee represents a SetMultiplierBatchFee event raised by the Polygonzkevm contract. +type PolygonzkevmSetMultiplierBatchFee struct { + NewMultiplierBatchFee uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetMultiplierBatchFee is a free log retrieval operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. +// +// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetMultiplierBatchFee(opts *bind.FilterOpts) (*PolygonzkevmSetMultiplierBatchFeeIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetMultiplierBatchFee") + if err != nil { + return nil, err + } + return &PolygonzkevmSetMultiplierBatchFeeIterator{contract: _Polygonzkevm.contract, event: "SetMultiplierBatchFee", logs: logs, sub: sub}, nil +} + +// WatchSetMultiplierBatchFee is a free log subscription operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. +// +// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetMultiplierBatchFee(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetMultiplierBatchFee) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetMultiplierBatchFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetMultiplierBatchFee) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetMultiplierBatchFee is a log parse operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. +// +// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetMultiplierBatchFee(log types.Log) (*PolygonzkevmSetMultiplierBatchFee, error) { + event := new(PolygonzkevmSetMultiplierBatchFee) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetPendingStateTimeoutIterator is returned from FilterSetPendingStateTimeout and is used to iterate over the raw logs and unpacked data for SetPendingStateTimeout events raised by the Polygonzkevm contract. +type PolygonzkevmSetPendingStateTimeoutIterator struct { + Event *PolygonzkevmSetPendingStateTimeout // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetPendingStateTimeoutIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetPendingStateTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetPendingStateTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetPendingStateTimeoutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetPendingStateTimeoutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetPendingStateTimeout represents a SetPendingStateTimeout event raised by the Polygonzkevm contract. +type PolygonzkevmSetPendingStateTimeout struct { + NewPendingStateTimeout uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetPendingStateTimeout is a free log retrieval operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. +// +// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetPendingStateTimeout(opts *bind.FilterOpts) (*PolygonzkevmSetPendingStateTimeoutIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetPendingStateTimeout") + if err != nil { + return nil, err + } + return &PolygonzkevmSetPendingStateTimeoutIterator{contract: _Polygonzkevm.contract, event: "SetPendingStateTimeout", logs: logs, sub: sub}, nil +} + +// WatchSetPendingStateTimeout is a free log subscription operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. +// +// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetPendingStateTimeout(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetPendingStateTimeout) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetPendingStateTimeout") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetPendingStateTimeout) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetPendingStateTimeout is a log parse operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. +// +// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetPendingStateTimeout(log types.Log) (*PolygonzkevmSetPendingStateTimeout, error) { + event := new(PolygonzkevmSetPendingStateTimeout) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetTrustedAggregatorIterator is returned from FilterSetTrustedAggregator and is used to iterate over the raw logs and unpacked data for SetTrustedAggregator events raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedAggregatorIterator struct { + Event *PolygonzkevmSetTrustedAggregator // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetTrustedAggregatorIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedAggregator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedAggregator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetTrustedAggregatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetTrustedAggregatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetTrustedAggregator represents a SetTrustedAggregator event raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedAggregator struct { + NewTrustedAggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedAggregator is a free log retrieval operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. +// +// Solidity: event SetTrustedAggregator(address newTrustedAggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetTrustedAggregator(opts *bind.FilterOpts) (*PolygonzkevmSetTrustedAggregatorIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetTrustedAggregator") + if err != nil { + return nil, err + } + return &PolygonzkevmSetTrustedAggregatorIterator{contract: _Polygonzkevm.contract, event: "SetTrustedAggregator", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedAggregator is a free log subscription operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. +// +// Solidity: event SetTrustedAggregator(address newTrustedAggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetTrustedAggregator(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetTrustedAggregator) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetTrustedAggregator") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetTrustedAggregator) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedAggregator is a log parse operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. +// +// Solidity: event SetTrustedAggregator(address newTrustedAggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetTrustedAggregator(log types.Log) (*PolygonzkevmSetTrustedAggregator, error) { + event := new(PolygonzkevmSetTrustedAggregator) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetTrustedAggregatorTimeoutIterator is returned from FilterSetTrustedAggregatorTimeout and is used to iterate over the raw logs and unpacked data for SetTrustedAggregatorTimeout events raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedAggregatorTimeoutIterator struct { + Event *PolygonzkevmSetTrustedAggregatorTimeout // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetTrustedAggregatorTimeoutIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedAggregatorTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedAggregatorTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetTrustedAggregatorTimeoutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetTrustedAggregatorTimeoutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetTrustedAggregatorTimeout represents a SetTrustedAggregatorTimeout event raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedAggregatorTimeout struct { + NewTrustedAggregatorTimeout uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedAggregatorTimeout is a free log retrieval operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. +// +// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetTrustedAggregatorTimeout(opts *bind.FilterOpts) (*PolygonzkevmSetTrustedAggregatorTimeoutIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetTrustedAggregatorTimeout") + if err != nil { + return nil, err + } + return &PolygonzkevmSetTrustedAggregatorTimeoutIterator{contract: _Polygonzkevm.contract, event: "SetTrustedAggregatorTimeout", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedAggregatorTimeout is a free log subscription operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. +// +// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetTrustedAggregatorTimeout(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetTrustedAggregatorTimeout) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetTrustedAggregatorTimeout") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetTrustedAggregatorTimeout) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedAggregatorTimeout is a log parse operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. +// +// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetTrustedAggregatorTimeout(log types.Log) (*PolygonzkevmSetTrustedAggregatorTimeout, error) { + event := new(PolygonzkevmSetTrustedAggregatorTimeout) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetTrustedSequencerIterator is returned from FilterSetTrustedSequencer and is used to iterate over the raw logs and unpacked data for SetTrustedSequencer events raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedSequencerIterator struct { + Event *PolygonzkevmSetTrustedSequencer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetTrustedSequencerIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedSequencer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedSequencer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetTrustedSequencerIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetTrustedSequencerIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetTrustedSequencer represents a SetTrustedSequencer event raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedSequencer struct { + NewTrustedSequencer common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedSequencer is a free log retrieval operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetTrustedSequencer(opts *bind.FilterOpts) (*PolygonzkevmSetTrustedSequencerIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetTrustedSequencer") + if err != nil { + return nil, err + } + return &PolygonzkevmSetTrustedSequencerIterator{contract: _Polygonzkevm.contract, event: "SetTrustedSequencer", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedSequencer is a free log subscription operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetTrustedSequencer(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetTrustedSequencer) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetTrustedSequencer") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetTrustedSequencer) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedSequencer is a log parse operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetTrustedSequencer(log types.Log) (*PolygonzkevmSetTrustedSequencer, error) { + event := new(PolygonzkevmSetTrustedSequencer) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetTrustedSequencerURLIterator is returned from FilterSetTrustedSequencerURL and is used to iterate over the raw logs and unpacked data for SetTrustedSequencerURL events raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedSequencerURLIterator struct { + Event *PolygonzkevmSetTrustedSequencerURL // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetTrustedSequencerURLIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedSequencerURL) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetTrustedSequencerURL) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetTrustedSequencerURLIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetTrustedSequencerURLIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetTrustedSequencerURL represents a SetTrustedSequencerURL event raised by the Polygonzkevm contract. +type PolygonzkevmSetTrustedSequencerURL struct { + NewTrustedSequencerURL string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedSequencerURL is a free log retrieval operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetTrustedSequencerURL(opts *bind.FilterOpts) (*PolygonzkevmSetTrustedSequencerURLIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetTrustedSequencerURL") + if err != nil { + return nil, err + } + return &PolygonzkevmSetTrustedSequencerURLIterator{contract: _Polygonzkevm.contract, event: "SetTrustedSequencerURL", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedSequencerURL is a free log subscription operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetTrustedSequencerURL(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetTrustedSequencerURL) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetTrustedSequencerURL") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetTrustedSequencerURL) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedSequencerURL is a log parse operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetTrustedSequencerURL(log types.Log) (*PolygonzkevmSetTrustedSequencerURL, error) { + event := new(PolygonzkevmSetTrustedSequencerURL) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmSetVeryBatchTimeTargetIterator is returned from FilterSetVeryBatchTimeTarget and is used to iterate over the raw logs and unpacked data for SetVeryBatchTimeTarget events raised by the Polygonzkevm contract. +type PolygonzkevmSetVeryBatchTimeTargetIterator struct { + Event *PolygonzkevmSetVeryBatchTimeTarget // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmSetVeryBatchTimeTargetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetVeryBatchTimeTarget) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmSetVeryBatchTimeTarget) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmSetVeryBatchTimeTargetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmSetVeryBatchTimeTargetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmSetVeryBatchTimeTarget represents a SetVeryBatchTimeTarget event raised by the Polygonzkevm contract. +type PolygonzkevmSetVeryBatchTimeTarget struct { + NewVeryBatchTimeTarget uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetVeryBatchTimeTarget is a free log retrieval operation binding the contract event 0x03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f. +// +// Solidity: event SetVeryBatchTimeTarget(uint64 newVeryBatchTimeTarget) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterSetVeryBatchTimeTarget(opts *bind.FilterOpts) (*PolygonzkevmSetVeryBatchTimeTargetIterator, error) { + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "SetVeryBatchTimeTarget") + if err != nil { + return nil, err + } + return &PolygonzkevmSetVeryBatchTimeTargetIterator{contract: _Polygonzkevm.contract, event: "SetVeryBatchTimeTarget", logs: logs, sub: sub}, nil +} + +// WatchSetVeryBatchTimeTarget is a free log subscription operation binding the contract event 0x03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f. +// +// Solidity: event SetVeryBatchTimeTarget(uint64 newVeryBatchTimeTarget) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchSetVeryBatchTimeTarget(opts *bind.WatchOpts, sink chan<- *PolygonzkevmSetVeryBatchTimeTarget) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "SetVeryBatchTimeTarget") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmSetVeryBatchTimeTarget) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetVeryBatchTimeTarget", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetVeryBatchTimeTarget is a log parse operation binding the contract event 0x03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f. +// +// Solidity: event SetVeryBatchTimeTarget(uint64 newVeryBatchTimeTarget) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseSetVeryBatchTimeTarget(log types.Log) (*PolygonzkevmSetVeryBatchTimeTarget, error) { + event := new(PolygonzkevmSetVeryBatchTimeTarget) + if err := _Polygonzkevm.contract.UnpackLog(event, "SetVeryBatchTimeTarget", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmTrustedVerifyBatchesIterator is returned from FilterTrustedVerifyBatches and is used to iterate over the raw logs and unpacked data for TrustedVerifyBatches events raised by the Polygonzkevm contract. +type PolygonzkevmTrustedVerifyBatchesIterator struct { + Event *PolygonzkevmTrustedVerifyBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmTrustedVerifyBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmTrustedVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmTrustedVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmTrustedVerifyBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmTrustedVerifyBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmTrustedVerifyBatches represents a TrustedVerifyBatches event raised by the Polygonzkevm contract. +type PolygonzkevmTrustedVerifyBatches struct { + NumBatch uint64 + StateRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTrustedVerifyBatches is a free log retrieval operation binding the contract event 0x0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7. +// +// Solidity: event TrustedVerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterTrustedVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*PolygonzkevmTrustedVerifyBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "TrustedVerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return &PolygonzkevmTrustedVerifyBatchesIterator{contract: _Polygonzkevm.contract, event: "TrustedVerifyBatches", logs: logs, sub: sub}, nil +} + +// WatchTrustedVerifyBatches is a free log subscription operation binding the contract event 0x0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7. +// +// Solidity: event TrustedVerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchTrustedVerifyBatches(opts *bind.WatchOpts, sink chan<- *PolygonzkevmTrustedVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "TrustedVerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmTrustedVerifyBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "TrustedVerifyBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTrustedVerifyBatches is a log parse operation binding the contract event 0x0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7. +// +// Solidity: event TrustedVerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseTrustedVerifyBatches(log types.Log) (*PolygonzkevmTrustedVerifyBatches, error) { + event := new(PolygonzkevmTrustedVerifyBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "TrustedVerifyBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmVerifyBatchesIterator is returned from FilterVerifyBatches and is used to iterate over the raw logs and unpacked data for VerifyBatches events raised by the Polygonzkevm contract. +type PolygonzkevmVerifyBatchesIterator struct { + Event *PolygonzkevmVerifyBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmVerifyBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmVerifyBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmVerifyBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmVerifyBatches represents a VerifyBatches event raised by the Polygonzkevm contract. +type PolygonzkevmVerifyBatches struct { + NumBatch uint64 + StateRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVerifyBatches is a free log retrieval operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) FilterVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*PolygonzkevmVerifyBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonzkevm.contract.FilterLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return &PolygonzkevmVerifyBatchesIterator{contract: _Polygonzkevm.contract, event: "VerifyBatches", logs: logs, sub: sub}, nil +} + +// WatchVerifyBatches is a free log subscription operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) WatchVerifyBatches(opts *bind.WatchOpts, sink chan<- *PolygonzkevmVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonzkevm.contract.WatchLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmVerifyBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVerifyBatches is a log parse operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonzkevm *PolygonzkevmFilterer) ParseVerifyBatches(log types.Log) (*PolygonzkevmVerifyBatches, error) { + event := new(PolygonzkevmVerifyBatches) + if err := _Polygonzkevm.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/etherman/smartcontracts/polygonzkevmbridge/polygonzkevmbridge.go b/etherman/smartcontracts/polygonzkevmbridge/polygonzkevmbridge.go new file mode 100644 index 0000000000..e0120a4aa9 --- /dev/null +++ b/etherman/smartcontracts/polygonzkevmbridge/polygonzkevmbridge.go @@ -0,0 +1,1705 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package polygonzkevmbridge + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// PolygonzkevmbridgeMetaData contains all meta data concerning the Polygonzkevmbridge contract. +var PolygonzkevmbridgeMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"depositCount\",\"type\":\"uint32\"}],\"name\":\"BridgeEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wrappedTokenAddress\",\"type\":\"address\"}],\"name\":\"NewWrappedToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LEAF_TYPE_ASSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LEAF_TYPE_MESSAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAINNET_NETWORK_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"bridgeAsset\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"bridgeMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimedBitMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDepositRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"getLeafValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"name\":\"getTokenWrappedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_networkID\",\"type\":\"uint32\"},{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_polygonZkEVMaddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"isClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"polygonZkEVMaddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"precalculatedWrapperAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"tokenInfoToWrappedToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"leafHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyMerkleProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokenToTokenInfo\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50614f9c806100206000396000f3fe608060405260043610620001ab5760003560e01c80637b6323c111620000e7578063d02103ca1162000089578063ed6be5c91162000060578063ed6be5c91462000512578063ee25560b1462000529578063ff634ed7146200055a57600080fd5b8063d02103ca14620004c1578063d96a15f714620004e3578063dbc1697614620004fa57600080fd5b8063a08e8a0811620000be578063a08e8a081462000438578063aaa13cc21462000462578063bab161bf146200048757600080fd5b80637b6323c114620003b457806381b1c17414620003d95780639e34070f146200041357600080fd5b806334ac9cf211620001515780633e19704311620001285780633e197043146200034557806346385549146200036a578063647c576c146200038f57600080fd5b806334ac9cf214620002e65780633ae0504714620003085780633da81682146200032057600080fd5b806322e95f2c116200018657806322e95f2c14620002125780632dfdf0b51462000250578063318aee3d146200027757600080fd5b80630871e97114620001b057806315064c9614620001c95780632072f6c514620001fa575b600080fd5b620001c7620001c136600462002b6e565b62000571565b005b348015620001d657600080fd5b50602254620001e59060ff1681565b60405190151581526020015b60405180910390f35b3480156200020757600080fd5b50620001c762000a9e565b3480156200021f57600080fd5b50620002376200023136600462002bfb565b62000b2c565b6040516001600160a01b039091168152602001620001f1565b3480156200025d57600080fd5b506200026860215481565b604051908152602001620001f1565b3480156200028457600080fd5b50620002c16200029636600462002c37565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f1565b348015620002f357600080fd5b5060275462000237906001600160a01b031681565b3480156200031557600080fd5b506200026862000ba8565b3480156200032d57600080fd5b50620001e56200033f36600462002d1f565b62000c9b565b3480156200035257600080fd5b50620002686200036436600462002d9d565b62000d9b565b3480156200037757600080fd5b50620001c76200038936600462002eae565b62000e45565b3480156200039c57600080fd5b50620001c7620003ae36600462002f95565b6200108e565b348015620003c157600080fd5b50620001c7620003d336600462002eae565b62001214565b348015620003e657600080fd5b5062000237620003f836600462002fe5565b6024602052600090815260409020546001600160a01b031681565b3480156200042057600080fd5b50620001e56200043236600462002fe5565b62001741565b3480156200044557600080fd5b506200044f600081565b60405160ff9091168152602001620001f1565b3480156200046f57600080fd5b50620002376200048136600462002fff565b62001786565b3480156200049457600080fd5b50602254620004ab90610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f1565b348015620004ce57600080fd5b5060265462000237906001600160a01b031681565b620001c7620004f4366004620030b3565b620018da565b3480156200050757600080fd5b50620001c762001ae6565b3480156200051f57600080fd5b50620004ab600081565b3480156200053657600080fd5b50620002686200054836600462002fe5565b60236020526000908152604090205481565b3480156200056757600080fd5b506200044f600181565b60225460ff1615620005fb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4015b60405180910390fd5b60225463ffffffff610100909104811690861603620006835760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620005f2565b60008060606001600160a01b0389166200073f57853414620007355760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e7660648201527f616c756500000000000000000000000000000000000000000000000000000000608482015260a401620005f2565b60009150620009b8565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000815576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac90604401600060405180830381600087803b158015620007e857600080fd5b505af1158015620007fd573d6000803e3d6000fd5b505050508060200151935080600001519250620009b6565b84156200082a576200082a8a88888862001b72565b620008416001600160a01b038b1633308a62002132565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000898573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008c291908101906200319e565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000901573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200092b91908101906200319e565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200096a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009909190620031d7565b604051602001620009a49392919062003225565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b87602154604051620009fa98979695949392919062003262565b60405180910390a162000a2562000a1f600084868c8c8c888051906020012062000d9b565b620021b8565b6026546001600160a01b03166333d6247d62000a4062000ba8565b6040518263ffffffff1660e01b815260040162000a5f91815260200190565b600060405180830381600087803b15801562000a7a57600080fd5b505af115801562000a8f573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b0316331462000b205760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620005f2565b62000b2a6200231c565b565b600060246000848460405160200162000b7092919060e09290921b6001600160e01b031916825260601b6bffffffffffffffffffffffff1916600482015260180190565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000c92578260011660010362000c13576001816020811062000bdf5762000bdf620032ce565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000c40565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000c4d60028462003310565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000c899062003327565b91505062000bb3565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000d8e578160011660010362000d185786818151811062000cd65762000cd6620032ce565b60200260200101518360405160200162000cfa929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000d6a565b8287828151811062000d2e5762000d2e620032ce565b602002602001015160405160200162000d51929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000d7760028362003310565b91508062000d858162003327565b91505062000cab565b5050909114949350505050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201526001600160e01b031960e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000ecb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b62000ee18a8a8a8a8a8a8a8a8a8a6001620023da565b62000ef28963ffffffff16620026fa565b6000836001600160a01b03168387898560405160240162000f169392919062003343565b60408051601f198184030181529181526020820180516001600160e01b03167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000f6691906200337c565b60006040518083038185875af1925050503d806000811462000fa5576040519150601f19603f3d011682016040523d82523d6000602084013e62000faa565b606091505b5050905080620010235760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201527f3a204d657373616765206661696c6564000000000000000000000000000000006064820152608401620005f2565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff1615808015620010af5750600054600160ff909116105b80620010cb5750303b158015620010cb575060005460ff166001145b6200113f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620005f2565b6000805460ff19166001179055801562001163576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255602780549285169290911691909117905580156200120e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff16156200129a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b620012b08a8a8a8a8a8a8a8a8a8a6000620023da565b620012c18963ffffffff16620026fa565b6001600160a01b038516620013c057604080516000808252602082019092526001600160a01b038516908490604051620012fc91906200337c565b60006040518083038185875af1925050503d80600081146200133b576040519150601f19603f3d011682016040523d82523d6000602084013e62001340565b606091505b5050905080620013b95760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a2060448201527f4574686572207472616e73666572206661696c656400000000000000000000006064820152608401620005f2565b50620016d7565b60225463ffffffff610100909104811690871603620013f557620013ef6001600160a01b03861684846200273c565b620016d7565b6040516001600160e01b031960e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b0316806200166f576000806000858060200190518101906200147d91906200339a565b925092509250600085848484604051620014979062002ad4565b620014a59392919062003225565b8190604051809103906000f5905080158015620014c6573d6000803e3d6000fd5b506040516340c10f1960e01b81526001600160a01b038b81166004830152602482018b9052919250908216906340c10f1990604401600060405180830381600087803b1580156200151657600080fd5b505af11580156200152b573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c836040516200165d9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a150505050620016d4565b6040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f1990604401600060405180830381600087803b158015620016ba57600080fd5b505af1158015620016cf573d6000803e3d6000fd5b505050505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600080620017526101008462003310565b90506000620017646101008562003410565b60009283526023602052604090922054600190921b9182169091149392505050565b6040516001600160e01b031960e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620017f19062002ad4565b601f1982820381018352601f9091011660408190526200181e908d908d908d908d908d9060200162003450565b60408051601f19818403018152908290526200183e929160200162003491565b60405160208183030381529060405280519060200120604051602001620018b494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620019605760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b60225463ffffffff610100909104811690841603620019e85760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620005f2565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff16338686348760215460405162001a3c98979695949392919062003262565b60405180910390a162001a7362000a1f6001602260019054906101000a900463ffffffff1633878734888051906020012062000d9b565b6026546001600160a01b03166333d6247d62001a8e62000ba8565b6040518263ffffffff1660e01b815260040162001aad91815260200190565b600060405180830381600087803b15801562001ac857600080fd5b505af115801562001add573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b0316331462001b685760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620005f2565b62000b2a62002787565b600062001bb583838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200283692505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000006001600160e01b031982160162001e8a57600080808080808062001c00896004818d620034c4565b81019062001c0f9190620034f0565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462001ca65760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d6974206f776e6572206d757374206265207468652073656e646572000000006064820152608401620005f2565b6001600160a01b038616301462001d265760405162461bcd60e51b815260206004820152603360248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2053706560448201527f6e646572206d75737420626520277468697327000000000000000000000000006064820152608401620005f2565b8a851462001d9d5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d697420616d6f756e7420646f6573206e6f74206d61746368000000000000006064820152608401620005f2565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b03167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001e3691906200337c565b6000604051808303816000865af19150503d806000811462001e75576040519150601f19603f3d011682016040523d82523d6000602084013e62001e7a565b606091505b505050505050505050506200212b565b6001600160e01b031981166323f2ebc360e21b1462001f125760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201527f2076616c69642063616c6c0000000000000000000000000000000000000000006064820152608401620005f2565b60008080808080808062001f2a8a6004818e620034c4565b81019062001f3991906200355a565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001fd25760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d6974206f776e6572206d757374206265207468652073656e646572000000006064820152608401620005f2565b6001600160a01b0387163014620020525760405162461bcd60e51b815260206004820152603360248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2053706560448201527f6e646572206d75737420626520277468697327000000000000000000000000006064820152608401620005f2565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f1691620020db91906200337c565b6000604051808303816000865af19150503d80600081146200211a576040519150601f19603f3d011682016040523d82523d6000602084013e6200211f565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200120e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200283d565b806001620021c960206002620036e3565b620021d59190620036f1565b602154106200224d5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c6560448201527f20747265652066756c6c000000000000000000000000000000000000000000006064820152608401620005f2565b6001602160008282546200226291906200370b565b909155505060215460005b60208110156200230c5781600116600103620022a25782600182602081106200229a576200229a620032ce565b015550505050565b60018160208110620022b857620022b8620032ce565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620022f5919062003310565b915080620023038162003327565b9150506200226d565b506200231762003726565b505050565b60225460ff1615620023a25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620005f2565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b620023eb8a63ffffffff1662001741565b15620024605760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20416c726561647920636c61696d6564000000000000000000000000000000006064820152608401620005f2565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620024ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200251391906200373c565b9050806000036200258d5760405162461bcd60e51b815260206004820152603760248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20476c6f62616c45786974526f6f7420696e76616c69640000000000000000006064820152608401620005f2565b60225463ffffffff87811661010090920416146200263a5760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d6160648201527f7463680000000000000000000000000000000000000000000000000000000000608482015260a401620005f2565b602254600090610100900463ffffffff16620026585750886200265b565b50895b6200268662002677848b8b8b8b8b8b8051906020012062000d9b565b8e8e63ffffffff168462000c9b565b62000a8f5760405162461bcd60e51b815260206004820152603260248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20496e76616c696420736d742070726f6f6600000000000000000000000000006064820152608401620005f2565b60006200270a6101008362003310565b905060006200271c6101008462003410565b6000928352602360205260409092208054600190931b9092179091555050565b6040516001600160a01b038316602482015260448101829052620023179084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002180565b60225460ff16620028015760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620005f2565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002894826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620029299092919063ffffffff16565b805190915015620023175780806020019051810190620028b5919062003756565b620023175760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620005f2565b60606200293a848460008562002944565b90505b9392505050565b606082471015620029be5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620005f2565b6001600160a01b0385163b62002a175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620005f2565b600080866001600160a01b0316858760405162002a3591906200337c565b60006040518083038185875af1925050503d806000811462002a74576040519150601f19603f3d011682016040523d82523d6000602084013e62002a79565b606091505b509150915062002a8b82828662002a96565b979650505050505050565b6060831562002aa75750816200293d565b82511562002ab85782518084602001fd5b8160405162461bcd60e51b8152600401620005f2919062003776565b6117db806200378c83390190565b6001600160a01b038116811462002af857600080fd5b50565b803562002b088162002ae2565b919050565b803563ffffffff8116811462002b0857600080fd5b60008083601f84011262002b3557600080fd5b50813567ffffffffffffffff81111562002b4e57600080fd5b60208301915083602082850101111562002b6757600080fd5b9250929050565b60008060008060008060a0878903121562002b8857600080fd5b863562002b958162002ae2565b955062002ba56020880162002b0d565b9450604087013562002bb78162002ae2565b935060608701359250608087013567ffffffffffffffff81111562002bdb57600080fd5b62002be989828a0162002b22565b979a9699509497509295939492505050565b6000806040838503121562002c0f57600080fd5b62002c1a8362002b0d565b9150602083013562002c2c8162002ae2565b809150509250929050565b60006020828403121562002c4a57600080fd5b81356200293d8162002ae2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002c995762002c9962002c57565b604052919050565b600082601f83011262002cb357600080fd5b8135602067ffffffffffffffff82111562002cd25762002cd262002c57565b8160051b62002ce382820162002c6d565b928352848101820192828101908785111562002cfe57600080fd5b83870192505b8483101562002a8b5782358252918301919083019062002d04565b6000806000806080858703121562002d3657600080fd5b84359350602085013567ffffffffffffffff8082111562002d5657600080fd5b62002d648883890162002ca1565b945060408701359150808216821462002d7c57600080fd5b509396929550929360600135925050565b60ff8116811462002af857600080fd5b600080600080600080600060e0888a03121562002db957600080fd5b873562002dc68162002d8d565b965062002dd66020890162002b0d565b9550604088013562002de88162002ae2565b945062002df86060890162002b0d565b9350608088013562002e0a8162002ae2565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562002e445762002e4462002c57565b50601f01601f191660200190565b600082601f83011262002e6457600080fd5b813562002e7b62002e758262002e27565b62002c6d565b81815284602083860101111562002e9157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002ecf57600080fd5b8a3567ffffffffffffffff8082111562002ee857600080fd5b62002ef68e838f0162002ca1565b9b5062002f0660208e0162002b0d565b9a5060408d0135995060608d0135985062002f2460808e0162002b0d565b975062002f3460a08e0162002afb565b965062002f4460c08e0162002b0d565b955062002f5460e08e0162002afb565b94506101008d013593506101208d013591508082111562002f7457600080fd5b5062002f838d828e0162002e52565b9150509295989b9194979a5092959850565b60008060006060848603121562002fab57600080fd5b62002fb68462002b0d565b9250602084013562002fc88162002ae2565b9150604084013562002fda8162002ae2565b809150509250925092565b60006020828403121562002ff857600080fd5b5035919050565b600080600080600080600060a0888a0312156200301b57600080fd5b620030268862002b0d565b96506020880135620030388162002ae2565b9550604088013567ffffffffffffffff808211156200305657600080fd5b620030648b838c0162002b22565b909750955060608a01359150808211156200307e57600080fd5b506200308d8a828b0162002b22565b9094509250506080880135620030a38162002d8d565b8091505092959891949750929550565b600080600060608486031215620030c957600080fd5b620030d48462002b0d565b92506020840135620030e68162002ae2565b9150604084013567ffffffffffffffff8111156200310357600080fd5b620031118682870162002e52565b9150509250925092565b60005b83811015620031385781810151838201526020016200311e565b838111156200120e5750506000910152565b600082601f8301126200315c57600080fd5b81516200316d62002e758262002e27565b8181528460208386010111156200318357600080fd5b620031968260208301602087016200311b565b949350505050565b600060208284031215620031b157600080fd5b815167ffffffffffffffff811115620031c957600080fd5b62003196848285016200314a565b600060208284031215620031ea57600080fd5b81516200293d8162002d8d565b60008151808452620032118160208601602086016200311b565b601f01601f19169290920160200192915050565b6060815260006200323a6060830186620031f7565b82810360208401526200324e8186620031f7565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620032b582850187620031f7565b925080851660e085015250509998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082620033225762003322620032e4565b500490565b6000600182016200333c576200333c620032fa565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620033736060830184620031f7565b95945050505050565b60008251620033908184602087016200311b565b9190910192915050565b600080600060608486031215620033b057600080fd5b835167ffffffffffffffff80821115620033c957600080fd5b620033d7878388016200314a565b94506020860151915080821115620033ee57600080fd5b50620033fd868287016200314a565b925050604084015162002fda8162002d8d565b600082620034225762003422620032e4565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006200346660608301878962003427565b82810360208401526200347b81868862003427565b91505060ff831660408301529695505050505050565b60008351620034a58184602088016200311b565b835190830190620034bb8183602088016200311b565b01949350505050565b60008085851115620034d557600080fd5b83861115620034e357600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200350c57600080fd5b8735620035198162002ae2565b965060208801356200352b8162002ae2565b95506040880135945060608801359350608088013562002e0a8162002d8d565b801515811462002af857600080fd5b600080600080600080600080610100898b0312156200357857600080fd5b8835620035858162002ae2565b97506020890135620035978162002ae2565b965060408901359550606089013594506080890135620035b7816200354b565b935060a0890135620035c98162002d8d565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620036275781600019048211156200360b576200360b620032fa565b808516156200361957918102915b93841c9390800290620035eb565b509250929050565b600082620036405750600162000ba2565b816200364f5750600062000ba2565b8160018114620036685760028114620036735762003693565b600191505062000ba2565b60ff841115620036875762003687620032fa565b50506001821b62000ba2565b5060208310610133831016604e8410600b8410161715620036b8575081810a62000ba2565b620036c48383620035e6565b8060001904821115620036db57620036db620032fa565b029392505050565b60006200293d83836200362f565b600082821015620037065762003706620032fa565b500390565b60008219821115620037215762003721620032fa565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200374f57600080fd5b5051919050565b6000602082840312156200376957600080fd5b81516200293d816200354b565b6020815260006200293d6020830184620031f756fe60c06040523480156200001157600080fd5b50604051620017db380380620017db8339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611321620004ba60003960006104e001526000818161034a01526104aa01526113216000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461036c578063dd62ed3e1461037f578063ffa1ad74146103b857600080fd5b8063a457c2d71461031f578063a9059cbb14610332578063cd0d00961461034557600080fd5b806395d89b41116100bd57806395d89b41146102d95780639dc29fac146102e1578063a3c573eb146102f457600080fd5b806370a08231146102905780637ecebe00146102b957600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103d8565b60405161019191906110b4565b60405180910390f35b6101ad6101a8366004611125565b61046a565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461114f565b610482565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104a6565b6101ad610276366004611125565b610502565b61028e610289366004611125565b610541565b005b6101c161029e36600461118b565b6001600160a01b031660009081526020819052604090205490565b6101c16102c736600461118b565b60066020526000908152604090205481565b6101846105d4565b61028e6102ef366004611125565b6105e3565b600554610307906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ad61032d366004611125565b61066d565b6101ad610340366004611125565b610717565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028e61037a3660046111ad565b610725565b6101c161038d366004611220565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103e790611253565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611253565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856109aa565b5060019392505050565b600033610490858285610b03565b61049b858585610b95565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104dd576104d846610dac565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610478908290869061053c9087906112a3565b6109aa565b6005546001600160a01b031633146105c65760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b6105d08282610e58565b5050565b6060600480546103e790611253565b6005546001600160a01b031633146106635760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084016105bd565b6105d08282610f37565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561070a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105bd565b61049b82868684036109aa565b600033610478818585610b95565b8342111561079a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866107e7836112bb565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108456104a6565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156108eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906109215750896001600160a01b0316816001600160a01b0316145b6109935760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105bd565b61099e8a8a8a6109aa565b50505050505050505050565b6001600160a01b038316610a255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610aa15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b8f5781811015610b825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105bd565b610b8f84848484036109aa565b50505050565b6001600160a01b038316610c115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610c8d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604090205481811015610d1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d539084906112a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9f91815260200190565b60405180910390a3610b8f565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610dd76103d8565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610eae5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105bd565b8060026000828254610ec091906112a3565b90915550506001600160a01b03821660009081526020819052604081208054839290610eed9084906112a3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610fb35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216600090815260208190526040902054818110156110425760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110719084906112d4565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610af6565b600060208083528351808285015260005b818110156110e1578581018301518582016040015282016110c5565b818111156110f3576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461112057600080fd5b919050565b6000806040838503121561113857600080fd5b61114183611109565b946020939093013593505050565b60008060006060848603121561116457600080fd5b61116d84611109565b925061117b60208501611109565b9150604084013590509250925092565b60006020828403121561119d57600080fd5b6111a682611109565b9392505050565b600080600080600080600060e0888a0312156111c857600080fd5b6111d188611109565b96506111df60208901611109565b95506040880135945060608801359350608088013560ff8116811461120357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561123357600080fd5b61123c83611109565b915061124a60208401611109565b90509250929050565b600181811c9082168061126757607f821691505b60208210810361128757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156112b6576112b661128d565b500190565b6000600182016112cd576112cd61128d565b5060010190565b6000828210156112e6576112e661128d565b50039056fea26469706673582212205d074ee584238a5fb66873e3fc67d479c99eb1688b3ca2f77c22e4f97ce77b0064736f6c634300080f0033a264697066735822122060e4844ad9ce717086f4bd60b8f5fde908812219549ad06e1605773fdd681c4d64736f6c634300080f0033", +} + +// PolygonzkevmbridgeABI is the input ABI used to generate the binding from. +// Deprecated: Use PolygonzkevmbridgeMetaData.ABI instead. +var PolygonzkevmbridgeABI = PolygonzkevmbridgeMetaData.ABI + +// PolygonzkevmbridgeBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PolygonzkevmbridgeMetaData.Bin instead. +var PolygonzkevmbridgeBin = PolygonzkevmbridgeMetaData.Bin + +// DeployPolygonzkevmbridge deploys a new Ethereum contract, binding an instance of Polygonzkevmbridge to it. +func DeployPolygonzkevmbridge(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Polygonzkevmbridge, error) { + parsed, err := PolygonzkevmbridgeMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PolygonzkevmbridgeBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Polygonzkevmbridge{PolygonzkevmbridgeCaller: PolygonzkevmbridgeCaller{contract: contract}, PolygonzkevmbridgeTransactor: PolygonzkevmbridgeTransactor{contract: contract}, PolygonzkevmbridgeFilterer: PolygonzkevmbridgeFilterer{contract: contract}}, nil +} + +// Polygonzkevmbridge is an auto generated Go binding around an Ethereum contract. +type Polygonzkevmbridge struct { + PolygonzkevmbridgeCaller // Read-only binding to the contract + PolygonzkevmbridgeTransactor // Write-only binding to the contract + PolygonzkevmbridgeFilterer // Log filterer for contract events +} + +// PolygonzkevmbridgeCaller is an auto generated read-only Go binding around an Ethereum contract. +type PolygonzkevmbridgeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmbridgeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PolygonzkevmbridgeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmbridgeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PolygonzkevmbridgeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmbridgeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PolygonzkevmbridgeSession struct { + Contract *Polygonzkevmbridge // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonzkevmbridgeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PolygonzkevmbridgeCallerSession struct { + Contract *PolygonzkevmbridgeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PolygonzkevmbridgeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PolygonzkevmbridgeTransactorSession struct { + Contract *PolygonzkevmbridgeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonzkevmbridgeRaw is an auto generated low-level Go binding around an Ethereum contract. +type PolygonzkevmbridgeRaw struct { + Contract *Polygonzkevmbridge // Generic contract binding to access the raw methods on +} + +// PolygonzkevmbridgeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PolygonzkevmbridgeCallerRaw struct { + Contract *PolygonzkevmbridgeCaller // Generic read-only contract binding to access the raw methods on +} + +// PolygonzkevmbridgeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PolygonzkevmbridgeTransactorRaw struct { + Contract *PolygonzkevmbridgeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPolygonzkevmbridge creates a new instance of Polygonzkevmbridge, bound to a specific deployed contract. +func NewPolygonzkevmbridge(address common.Address, backend bind.ContractBackend) (*Polygonzkevmbridge, error) { + contract, err := bindPolygonzkevmbridge(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Polygonzkevmbridge{PolygonzkevmbridgeCaller: PolygonzkevmbridgeCaller{contract: contract}, PolygonzkevmbridgeTransactor: PolygonzkevmbridgeTransactor{contract: contract}, PolygonzkevmbridgeFilterer: PolygonzkevmbridgeFilterer{contract: contract}}, nil +} + +// NewPolygonzkevmbridgeCaller creates a new read-only instance of Polygonzkevmbridge, bound to a specific deployed contract. +func NewPolygonzkevmbridgeCaller(address common.Address, caller bind.ContractCaller) (*PolygonzkevmbridgeCaller, error) { + contract, err := bindPolygonzkevmbridge(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeCaller{contract: contract}, nil +} + +// NewPolygonzkevmbridgeTransactor creates a new write-only instance of Polygonzkevmbridge, bound to a specific deployed contract. +func NewPolygonzkevmbridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*PolygonzkevmbridgeTransactor, error) { + contract, err := bindPolygonzkevmbridge(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeTransactor{contract: contract}, nil +} + +// NewPolygonzkevmbridgeFilterer creates a new log filterer instance of Polygonzkevmbridge, bound to a specific deployed contract. +func NewPolygonzkevmbridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*PolygonzkevmbridgeFilterer, error) { + contract, err := bindPolygonzkevmbridge(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeFilterer{contract: contract}, nil +} + +// bindPolygonzkevmbridge binds a generic wrapper to an already deployed contract. +func bindPolygonzkevmbridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(PolygonzkevmbridgeABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonzkevmbridge *PolygonzkevmbridgeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonzkevmbridge.Contract.PolygonzkevmbridgeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonzkevmbridge *PolygonzkevmbridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.PolygonzkevmbridgeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonzkevmbridge *PolygonzkevmbridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.PolygonzkevmbridgeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonzkevmbridge.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.contract.Transact(opts, method, params...) +} + +// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. +// +// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) LEAFTYPEASSET(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "LEAF_TYPE_ASSET") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. +// +// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) LEAFTYPEASSET() (uint8, error) { + return _Polygonzkevmbridge.Contract.LEAFTYPEASSET(&_Polygonzkevmbridge.CallOpts) +} + +// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. +// +// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) LEAFTYPEASSET() (uint8, error) { + return _Polygonzkevmbridge.Contract.LEAFTYPEASSET(&_Polygonzkevmbridge.CallOpts) +} + +// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. +// +// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) LEAFTYPEMESSAGE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "LEAF_TYPE_MESSAGE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. +// +// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) LEAFTYPEMESSAGE() (uint8, error) { + return _Polygonzkevmbridge.Contract.LEAFTYPEMESSAGE(&_Polygonzkevmbridge.CallOpts) +} + +// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. +// +// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) LEAFTYPEMESSAGE() (uint8, error) { + return _Polygonzkevmbridge.Contract.LEAFTYPEMESSAGE(&_Polygonzkevmbridge.CallOpts) +} + +// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. +// +// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) MAINNETNETWORKID(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "MAINNET_NETWORK_ID") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. +// +// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) MAINNETNETWORKID() (uint32, error) { + return _Polygonzkevmbridge.Contract.MAINNETNETWORKID(&_Polygonzkevmbridge.CallOpts) +} + +// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. +// +// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) MAINNETNETWORKID() (uint32, error) { + return _Polygonzkevmbridge.Contract.MAINNETNETWORKID(&_Polygonzkevmbridge.CallOpts) +} + +// ClaimedBitMap is a free data retrieval call binding the contract method 0xee25560b. +// +// Solidity: function claimedBitMap(uint256 ) view returns(uint256) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) ClaimedBitMap(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "claimedBitMap", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ClaimedBitMap is a free data retrieval call binding the contract method 0xee25560b. +// +// Solidity: function claimedBitMap(uint256 ) view returns(uint256) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ClaimedBitMap(arg0 *big.Int) (*big.Int, error) { + return _Polygonzkevmbridge.Contract.ClaimedBitMap(&_Polygonzkevmbridge.CallOpts, arg0) +} + +// ClaimedBitMap is a free data retrieval call binding the contract method 0xee25560b. +// +// Solidity: function claimedBitMap(uint256 ) view returns(uint256) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) ClaimedBitMap(arg0 *big.Int) (*big.Int, error) { + return _Polygonzkevmbridge.Contract.ClaimedBitMap(&_Polygonzkevmbridge.CallOpts, arg0) +} + +// DepositCount is a free data retrieval call binding the contract method 0x2dfdf0b5. +// +// Solidity: function depositCount() view returns(uint256) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) DepositCount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "depositCount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DepositCount is a free data retrieval call binding the contract method 0x2dfdf0b5. +// +// Solidity: function depositCount() view returns(uint256) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) DepositCount() (*big.Int, error) { + return _Polygonzkevmbridge.Contract.DepositCount(&_Polygonzkevmbridge.CallOpts) +} + +// DepositCount is a free data retrieval call binding the contract method 0x2dfdf0b5. +// +// Solidity: function depositCount() view returns(uint256) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) DepositCount() (*big.Int, error) { + return _Polygonzkevmbridge.Contract.DepositCount(&_Polygonzkevmbridge.CallOpts) +} + +// GetDepositRoot is a free data retrieval call binding the contract method 0x3ae05047. +// +// Solidity: function getDepositRoot() view returns(bytes32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) GetDepositRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "getDepositRoot") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDepositRoot is a free data retrieval call binding the contract method 0x3ae05047. +// +// Solidity: function getDepositRoot() view returns(bytes32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) GetDepositRoot() ([32]byte, error) { + return _Polygonzkevmbridge.Contract.GetDepositRoot(&_Polygonzkevmbridge.CallOpts) +} + +// GetDepositRoot is a free data retrieval call binding the contract method 0x3ae05047. +// +// Solidity: function getDepositRoot() view returns(bytes32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) GetDepositRoot() ([32]byte, error) { + return _Polygonzkevmbridge.Contract.GetDepositRoot(&_Polygonzkevmbridge.CallOpts) +} + +// GetLeafValue is a free data retrieval call binding the contract method 0x3e197043. +// +// Solidity: function getLeafValue(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes32 metadataHash) pure returns(bytes32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) GetLeafValue(opts *bind.CallOpts, leafType uint8, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadataHash [32]byte) ([32]byte, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "getLeafValue", leafType, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadataHash) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetLeafValue is a free data retrieval call binding the contract method 0x3e197043. +// +// Solidity: function getLeafValue(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes32 metadataHash) pure returns(bytes32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) GetLeafValue(leafType uint8, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadataHash [32]byte) ([32]byte, error) { + return _Polygonzkevmbridge.Contract.GetLeafValue(&_Polygonzkevmbridge.CallOpts, leafType, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadataHash) +} + +// GetLeafValue is a free data retrieval call binding the contract method 0x3e197043. +// +// Solidity: function getLeafValue(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes32 metadataHash) pure returns(bytes32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) GetLeafValue(leafType uint8, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadataHash [32]byte) ([32]byte, error) { + return _Polygonzkevmbridge.Contract.GetLeafValue(&_Polygonzkevmbridge.CallOpts, leafType, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadataHash) +} + +// GetTokenWrappedAddress is a free data retrieval call binding the contract method 0x22e95f2c. +// +// Solidity: function getTokenWrappedAddress(uint32 originNetwork, address originTokenAddress) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) GetTokenWrappedAddress(opts *bind.CallOpts, originNetwork uint32, originTokenAddress common.Address) (common.Address, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "getTokenWrappedAddress", originNetwork, originTokenAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetTokenWrappedAddress is a free data retrieval call binding the contract method 0x22e95f2c. +// +// Solidity: function getTokenWrappedAddress(uint32 originNetwork, address originTokenAddress) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) GetTokenWrappedAddress(originNetwork uint32, originTokenAddress common.Address) (common.Address, error) { + return _Polygonzkevmbridge.Contract.GetTokenWrappedAddress(&_Polygonzkevmbridge.CallOpts, originNetwork, originTokenAddress) +} + +// GetTokenWrappedAddress is a free data retrieval call binding the contract method 0x22e95f2c. +// +// Solidity: function getTokenWrappedAddress(uint32 originNetwork, address originTokenAddress) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) GetTokenWrappedAddress(originNetwork uint32, originTokenAddress common.Address) (common.Address, error) { + return _Polygonzkevmbridge.Contract.GetTokenWrappedAddress(&_Polygonzkevmbridge.CallOpts, originNetwork, originTokenAddress) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "globalExitRootManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) GlobalExitRootManager() (common.Address, error) { + return _Polygonzkevmbridge.Contract.GlobalExitRootManager(&_Polygonzkevmbridge.CallOpts) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) GlobalExitRootManager() (common.Address, error) { + return _Polygonzkevmbridge.Contract.GlobalExitRootManager(&_Polygonzkevmbridge.CallOpts) +} + +// IsClaimed is a free data retrieval call binding the contract method 0x9e34070f. +// +// Solidity: function isClaimed(uint256 index) view returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) IsClaimed(opts *bind.CallOpts, index *big.Int) (bool, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "isClaimed", index) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsClaimed is a free data retrieval call binding the contract method 0x9e34070f. +// +// Solidity: function isClaimed(uint256 index) view returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) IsClaimed(index *big.Int) (bool, error) { + return _Polygonzkevmbridge.Contract.IsClaimed(&_Polygonzkevmbridge.CallOpts, index) +} + +// IsClaimed is a free data retrieval call binding the contract method 0x9e34070f. +// +// Solidity: function isClaimed(uint256 index) view returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) IsClaimed(index *big.Int) (bool, error) { + return _Polygonzkevmbridge.Contract.IsClaimed(&_Polygonzkevmbridge.CallOpts, index) +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) IsEmergencyState(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "isEmergencyState") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) IsEmergencyState() (bool, error) { + return _Polygonzkevmbridge.Contract.IsEmergencyState(&_Polygonzkevmbridge.CallOpts) +} + +// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. +// +// Solidity: function isEmergencyState() view returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) IsEmergencyState() (bool, error) { + return _Polygonzkevmbridge.Contract.IsEmergencyState(&_Polygonzkevmbridge.CallOpts) +} + +// NetworkID is a free data retrieval call binding the contract method 0xbab161bf. +// +// Solidity: function networkID() view returns(uint32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) NetworkID(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "networkID") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// NetworkID is a free data retrieval call binding the contract method 0xbab161bf. +// +// Solidity: function networkID() view returns(uint32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) NetworkID() (uint32, error) { + return _Polygonzkevmbridge.Contract.NetworkID(&_Polygonzkevmbridge.CallOpts) +} + +// NetworkID is a free data retrieval call binding the contract method 0xbab161bf. +// +// Solidity: function networkID() view returns(uint32) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) NetworkID() (uint32, error) { + return _Polygonzkevmbridge.Contract.NetworkID(&_Polygonzkevmbridge.CallOpts) +} + +// PolygonZkEVMaddress is a free data retrieval call binding the contract method 0x34ac9cf2. +// +// Solidity: function polygonZkEVMaddress() view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) PolygonZkEVMaddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "polygonZkEVMaddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PolygonZkEVMaddress is a free data retrieval call binding the contract method 0x34ac9cf2. +// +// Solidity: function polygonZkEVMaddress() view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) PolygonZkEVMaddress() (common.Address, error) { + return _Polygonzkevmbridge.Contract.PolygonZkEVMaddress(&_Polygonzkevmbridge.CallOpts) +} + +// PolygonZkEVMaddress is a free data retrieval call binding the contract method 0x34ac9cf2. +// +// Solidity: function polygonZkEVMaddress() view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) PolygonZkEVMaddress() (common.Address, error) { + return _Polygonzkevmbridge.Contract.PolygonZkEVMaddress(&_Polygonzkevmbridge.CallOpts) +} + +// PrecalculatedWrapperAddress is a free data retrieval call binding the contract method 0xaaa13cc2. +// +// Solidity: function precalculatedWrapperAddress(uint32 originNetwork, address originTokenAddress, string name, string symbol, uint8 decimals) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) PrecalculatedWrapperAddress(opts *bind.CallOpts, originNetwork uint32, originTokenAddress common.Address, name string, symbol string, decimals uint8) (common.Address, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "precalculatedWrapperAddress", originNetwork, originTokenAddress, name, symbol, decimals) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PrecalculatedWrapperAddress is a free data retrieval call binding the contract method 0xaaa13cc2. +// +// Solidity: function precalculatedWrapperAddress(uint32 originNetwork, address originTokenAddress, string name, string symbol, uint8 decimals) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) PrecalculatedWrapperAddress(originNetwork uint32, originTokenAddress common.Address, name string, symbol string, decimals uint8) (common.Address, error) { + return _Polygonzkevmbridge.Contract.PrecalculatedWrapperAddress(&_Polygonzkevmbridge.CallOpts, originNetwork, originTokenAddress, name, symbol, decimals) +} + +// PrecalculatedWrapperAddress is a free data retrieval call binding the contract method 0xaaa13cc2. +// +// Solidity: function precalculatedWrapperAddress(uint32 originNetwork, address originTokenAddress, string name, string symbol, uint8 decimals) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) PrecalculatedWrapperAddress(originNetwork uint32, originTokenAddress common.Address, name string, symbol string, decimals uint8) (common.Address, error) { + return _Polygonzkevmbridge.Contract.PrecalculatedWrapperAddress(&_Polygonzkevmbridge.CallOpts, originNetwork, originTokenAddress, name, symbol, decimals) +} + +// TokenInfoToWrappedToken is a free data retrieval call binding the contract method 0x81b1c174. +// +// Solidity: function tokenInfoToWrappedToken(bytes32 ) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) TokenInfoToWrappedToken(opts *bind.CallOpts, arg0 [32]byte) (common.Address, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "tokenInfoToWrappedToken", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TokenInfoToWrappedToken is a free data retrieval call binding the contract method 0x81b1c174. +// +// Solidity: function tokenInfoToWrappedToken(bytes32 ) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) TokenInfoToWrappedToken(arg0 [32]byte) (common.Address, error) { + return _Polygonzkevmbridge.Contract.TokenInfoToWrappedToken(&_Polygonzkevmbridge.CallOpts, arg0) +} + +// TokenInfoToWrappedToken is a free data retrieval call binding the contract method 0x81b1c174. +// +// Solidity: function tokenInfoToWrappedToken(bytes32 ) view returns(address) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) TokenInfoToWrappedToken(arg0 [32]byte) (common.Address, error) { + return _Polygonzkevmbridge.Contract.TokenInfoToWrappedToken(&_Polygonzkevmbridge.CallOpts, arg0) +} + +// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. +// +// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) VerifyMerkleProof(opts *bind.CallOpts, leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "verifyMerkleProof", leafHash, smtProof, index, root) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. +// +// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) VerifyMerkleProof(leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { + return _Polygonzkevmbridge.Contract.VerifyMerkleProof(&_Polygonzkevmbridge.CallOpts, leafHash, smtProof, index, root) +} + +// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. +// +// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) VerifyMerkleProof(leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { + return _Polygonzkevmbridge.Contract.VerifyMerkleProof(&_Polygonzkevmbridge.CallOpts, leafHash, smtProof, index, root) +} + +// WrappedTokenToTokenInfo is a free data retrieval call binding the contract method 0x318aee3d. +// +// Solidity: function wrappedTokenToTokenInfo(address ) view returns(uint32 originNetwork, address originTokenAddress) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) WrappedTokenToTokenInfo(opts *bind.CallOpts, arg0 common.Address) (struct { + OriginNetwork uint32 + OriginTokenAddress common.Address +}, error) { + var out []interface{} + err := _Polygonzkevmbridge.contract.Call(opts, &out, "wrappedTokenToTokenInfo", arg0) + + outstruct := new(struct { + OriginNetwork uint32 + OriginTokenAddress common.Address + }) + if err != nil { + return *outstruct, err + } + + outstruct.OriginNetwork = *abi.ConvertType(out[0], new(uint32)).(*uint32) + outstruct.OriginTokenAddress = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + + return *outstruct, err + +} + +// WrappedTokenToTokenInfo is a free data retrieval call binding the contract method 0x318aee3d. +// +// Solidity: function wrappedTokenToTokenInfo(address ) view returns(uint32 originNetwork, address originTokenAddress) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) WrappedTokenToTokenInfo(arg0 common.Address) (struct { + OriginNetwork uint32 + OriginTokenAddress common.Address +}, error) { + return _Polygonzkevmbridge.Contract.WrappedTokenToTokenInfo(&_Polygonzkevmbridge.CallOpts, arg0) +} + +// WrappedTokenToTokenInfo is a free data retrieval call binding the contract method 0x318aee3d. +// +// Solidity: function wrappedTokenToTokenInfo(address ) view returns(uint32 originNetwork, address originTokenAddress) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) WrappedTokenToTokenInfo(arg0 common.Address) (struct { + OriginNetwork uint32 + OriginTokenAddress common.Address +}, error) { + return _Polygonzkevmbridge.Contract.WrappedTokenToTokenInfo(&_Polygonzkevmbridge.CallOpts, arg0) +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. +// +// Solidity: function activateEmergencyState() returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) ActivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevmbridge.contract.Transact(opts, "activateEmergencyState") +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. +// +// Solidity: function activateEmergencyState() returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ActivateEmergencyState() (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.ActivateEmergencyState(&_Polygonzkevmbridge.TransactOpts) +} + +// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x2072f6c5. +// +// Solidity: function activateEmergencyState() returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) ActivateEmergencyState() (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.ActivateEmergencyState(&_Polygonzkevmbridge.TransactOpts) +} + +// BridgeAsset is a paid mutator transaction binding the contract method 0x0871e971. +// +// Solidity: function bridgeAsset(address token, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes permitData) payable returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) BridgeAsset(opts *bind.TransactOpts, token common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, permitData []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.contract.Transact(opts, "bridgeAsset", token, destinationNetwork, destinationAddress, amount, permitData) +} + +// BridgeAsset is a paid mutator transaction binding the contract method 0x0871e971. +// +// Solidity: function bridgeAsset(address token, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes permitData) payable returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) BridgeAsset(token common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, permitData []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.BridgeAsset(&_Polygonzkevmbridge.TransactOpts, token, destinationNetwork, destinationAddress, amount, permitData) +} + +// BridgeAsset is a paid mutator transaction binding the contract method 0x0871e971. +// +// Solidity: function bridgeAsset(address token, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes permitData) payable returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) BridgeAsset(token common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, permitData []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.BridgeAsset(&_Polygonzkevmbridge.TransactOpts, token, destinationNetwork, destinationAddress, amount, permitData) +} + +// BridgeMessage is a paid mutator transaction binding the contract method 0xd96a15f7. +// +// Solidity: function bridgeMessage(uint32 destinationNetwork, address destinationAddress, bytes metadata) payable returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) BridgeMessage(opts *bind.TransactOpts, destinationNetwork uint32, destinationAddress common.Address, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.contract.Transact(opts, "bridgeMessage", destinationNetwork, destinationAddress, metadata) +} + +// BridgeMessage is a paid mutator transaction binding the contract method 0xd96a15f7. +// +// Solidity: function bridgeMessage(uint32 destinationNetwork, address destinationAddress, bytes metadata) payable returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) BridgeMessage(destinationNetwork uint32, destinationAddress common.Address, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.BridgeMessage(&_Polygonzkevmbridge.TransactOpts, destinationNetwork, destinationAddress, metadata) +} + +// BridgeMessage is a paid mutator transaction binding the contract method 0xd96a15f7. +// +// Solidity: function bridgeMessage(uint32 destinationNetwork, address destinationAddress, bytes metadata) payable returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) BridgeMessage(destinationNetwork uint32, destinationAddress common.Address, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.BridgeMessage(&_Polygonzkevmbridge.TransactOpts, destinationNetwork, destinationAddress, metadata) +} + +// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. +// +// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) ClaimAsset(opts *bind.TransactOpts, smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.contract.Transact(opts, "claimAsset", smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) +} + +// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. +// +// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ClaimAsset(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.ClaimAsset(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) +} + +// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. +// +// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) ClaimAsset(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.ClaimAsset(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) +} + +// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. +// +// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) ClaimMessage(opts *bind.TransactOpts, smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.contract.Transact(opts, "claimMessage", smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) +} + +// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. +// +// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ClaimMessage(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.ClaimMessage(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) +} + +// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. +// +// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) ClaimMessage(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.ClaimMessage(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) DeactivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevmbridge.contract.Transact(opts, "deactivateEmergencyState") +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) DeactivateEmergencyState() (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.DeactivateEmergencyState(&_Polygonzkevmbridge.TransactOpts) +} + +// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. +// +// Solidity: function deactivateEmergencyState() returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) DeactivateEmergencyState() (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.DeactivateEmergencyState(&_Polygonzkevmbridge.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x647c576c. +// +// Solidity: function initialize(uint32 _networkID, address _globalExitRootManager, address _polygonZkEVMaddress) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) Initialize(opts *bind.TransactOpts, _networkID uint32, _globalExitRootManager common.Address, _polygonZkEVMaddress common.Address) (*types.Transaction, error) { + return _Polygonzkevmbridge.contract.Transact(opts, "initialize", _networkID, _globalExitRootManager, _polygonZkEVMaddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x647c576c. +// +// Solidity: function initialize(uint32 _networkID, address _globalExitRootManager, address _polygonZkEVMaddress) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) Initialize(_networkID uint32, _globalExitRootManager common.Address, _polygonZkEVMaddress common.Address) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.Initialize(&_Polygonzkevmbridge.TransactOpts, _networkID, _globalExitRootManager, _polygonZkEVMaddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x647c576c. +// +// Solidity: function initialize(uint32 _networkID, address _globalExitRootManager, address _polygonZkEVMaddress) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) Initialize(_networkID uint32, _globalExitRootManager common.Address, _polygonZkEVMaddress common.Address) (*types.Transaction, error) { + return _Polygonzkevmbridge.Contract.Initialize(&_Polygonzkevmbridge.TransactOpts, _networkID, _globalExitRootManager, _polygonZkEVMaddress) +} + +// PolygonzkevmbridgeBridgeEventIterator is returned from FilterBridgeEvent and is used to iterate over the raw logs and unpacked data for BridgeEvent events raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeBridgeEventIterator struct { + Event *PolygonzkevmbridgeBridgeEvent // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmbridgeBridgeEventIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeBridgeEvent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeBridgeEvent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmbridgeBridgeEventIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmbridgeBridgeEventIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmbridgeBridgeEvent represents a BridgeEvent event raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeBridgeEvent struct { + LeafType uint8 + OriginNetwork uint32 + OriginAddress common.Address + DestinationNetwork uint32 + DestinationAddress common.Address + Amount *big.Int + Metadata []byte + DepositCount uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBridgeEvent is a free log retrieval operation binding the contract event 0x501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b. +// +// Solidity: event BridgeEvent(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata, uint32 depositCount) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterBridgeEvent(opts *bind.FilterOpts) (*PolygonzkevmbridgeBridgeEventIterator, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.FilterLogs(opts, "BridgeEvent") + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeBridgeEventIterator{contract: _Polygonzkevmbridge.contract, event: "BridgeEvent", logs: logs, sub: sub}, nil +} + +// WatchBridgeEvent is a free log subscription operation binding the contract event 0x501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b. +// +// Solidity: event BridgeEvent(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata, uint32 depositCount) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchBridgeEvent(opts *bind.WatchOpts, sink chan<- *PolygonzkevmbridgeBridgeEvent) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.WatchLogs(opts, "BridgeEvent") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmbridgeBridgeEvent) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "BridgeEvent", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBridgeEvent is a log parse operation binding the contract event 0x501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b. +// +// Solidity: event BridgeEvent(uint8 leafType, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata, uint32 depositCount) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) ParseBridgeEvent(log types.Log) (*PolygonzkevmbridgeBridgeEvent, error) { + event := new(PolygonzkevmbridgeBridgeEvent) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "BridgeEvent", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmbridgeClaimEventIterator is returned from FilterClaimEvent and is used to iterate over the raw logs and unpacked data for ClaimEvent events raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeClaimEventIterator struct { + Event *PolygonzkevmbridgeClaimEvent // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmbridgeClaimEventIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeClaimEvent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeClaimEvent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmbridgeClaimEventIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmbridgeClaimEventIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmbridgeClaimEvent represents a ClaimEvent event raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeClaimEvent struct { + Index uint32 + OriginNetwork uint32 + OriginAddress common.Address + DestinationAddress common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterClaimEvent is a free log retrieval operation binding the contract event 0x25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe27545983. +// +// Solidity: event ClaimEvent(uint32 index, uint32 originNetwork, address originAddress, address destinationAddress, uint256 amount) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterClaimEvent(opts *bind.FilterOpts) (*PolygonzkevmbridgeClaimEventIterator, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.FilterLogs(opts, "ClaimEvent") + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeClaimEventIterator{contract: _Polygonzkevmbridge.contract, event: "ClaimEvent", logs: logs, sub: sub}, nil +} + +// WatchClaimEvent is a free log subscription operation binding the contract event 0x25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe27545983. +// +// Solidity: event ClaimEvent(uint32 index, uint32 originNetwork, address originAddress, address destinationAddress, uint256 amount) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchClaimEvent(opts *bind.WatchOpts, sink chan<- *PolygonzkevmbridgeClaimEvent) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.WatchLogs(opts, "ClaimEvent") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmbridgeClaimEvent) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "ClaimEvent", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseClaimEvent is a log parse operation binding the contract event 0x25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe27545983. +// +// Solidity: event ClaimEvent(uint32 index, uint32 originNetwork, address originAddress, address destinationAddress, uint256 amount) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) ParseClaimEvent(log types.Log) (*PolygonzkevmbridgeClaimEvent, error) { + event := new(PolygonzkevmbridgeClaimEvent) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "ClaimEvent", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmbridgeEmergencyStateActivatedIterator is returned from FilterEmergencyStateActivated and is used to iterate over the raw logs and unpacked data for EmergencyStateActivated events raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeEmergencyStateActivatedIterator struct { + Event *PolygonzkevmbridgeEmergencyStateActivated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmbridgeEmergencyStateActivatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeEmergencyStateActivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeEmergencyStateActivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmbridgeEmergencyStateActivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmbridgeEmergencyStateActivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmbridgeEmergencyStateActivated represents a EmergencyStateActivated event raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeEmergencyStateActivated struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEmergencyStateActivated is a free log retrieval operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterEmergencyStateActivated(opts *bind.FilterOpts) (*PolygonzkevmbridgeEmergencyStateActivatedIterator, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.FilterLogs(opts, "EmergencyStateActivated") + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeEmergencyStateActivatedIterator{contract: _Polygonzkevmbridge.contract, event: "EmergencyStateActivated", logs: logs, sub: sub}, nil +} + +// WatchEmergencyStateActivated is a free log subscription operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchEmergencyStateActivated(opts *bind.WatchOpts, sink chan<- *PolygonzkevmbridgeEmergencyStateActivated) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.WatchLogs(opts, "EmergencyStateActivated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmbridgeEmergencyStateActivated) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEmergencyStateActivated is a log parse operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. +// +// Solidity: event EmergencyStateActivated() +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) ParseEmergencyStateActivated(log types.Log) (*PolygonzkevmbridgeEmergencyStateActivated, error) { + event := new(PolygonzkevmbridgeEmergencyStateActivated) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmbridgeEmergencyStateDeactivatedIterator is returned from FilterEmergencyStateDeactivated and is used to iterate over the raw logs and unpacked data for EmergencyStateDeactivated events raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeEmergencyStateDeactivatedIterator struct { + Event *PolygonzkevmbridgeEmergencyStateDeactivated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmbridgeEmergencyStateDeactivatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeEmergencyStateDeactivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeEmergencyStateDeactivated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmbridgeEmergencyStateDeactivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmbridgeEmergencyStateDeactivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmbridgeEmergencyStateDeactivated represents a EmergencyStateDeactivated event raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeEmergencyStateDeactivated struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEmergencyStateDeactivated is a free log retrieval operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterEmergencyStateDeactivated(opts *bind.FilterOpts) (*PolygonzkevmbridgeEmergencyStateDeactivatedIterator, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.FilterLogs(opts, "EmergencyStateDeactivated") + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeEmergencyStateDeactivatedIterator{contract: _Polygonzkevmbridge.contract, event: "EmergencyStateDeactivated", logs: logs, sub: sub}, nil +} + +// WatchEmergencyStateDeactivated is a free log subscription operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchEmergencyStateDeactivated(opts *bind.WatchOpts, sink chan<- *PolygonzkevmbridgeEmergencyStateDeactivated) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.WatchLogs(opts, "EmergencyStateDeactivated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmbridgeEmergencyStateDeactivated) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEmergencyStateDeactivated is a log parse operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. +// +// Solidity: event EmergencyStateDeactivated() +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) ParseEmergencyStateDeactivated(log types.Log) (*PolygonzkevmbridgeEmergencyStateDeactivated, error) { + event := new(PolygonzkevmbridgeEmergencyStateDeactivated) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmbridgeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeInitializedIterator struct { + Event *PolygonzkevmbridgeInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmbridgeInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmbridgeInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmbridgeInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmbridgeInitialized represents a Initialized event raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterInitialized(opts *bind.FilterOpts) (*PolygonzkevmbridgeInitializedIterator, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeInitializedIterator{contract: _Polygonzkevmbridge.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PolygonzkevmbridgeInitialized) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmbridgeInitialized) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) ParseInitialized(log types.Log) (*PolygonzkevmbridgeInitialized, error) { + event := new(PolygonzkevmbridgeInitialized) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmbridgeNewWrappedTokenIterator is returned from FilterNewWrappedToken and is used to iterate over the raw logs and unpacked data for NewWrappedToken events raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeNewWrappedTokenIterator struct { + Event *PolygonzkevmbridgeNewWrappedToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmbridgeNewWrappedTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeNewWrappedToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmbridgeNewWrappedToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmbridgeNewWrappedTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmbridgeNewWrappedTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmbridgeNewWrappedToken represents a NewWrappedToken event raised by the Polygonzkevmbridge contract. +type PolygonzkevmbridgeNewWrappedToken struct { + OriginNetwork uint32 + OriginTokenAddress common.Address + WrappedTokenAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewWrappedToken is a free log retrieval operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. +// +// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterNewWrappedToken(opts *bind.FilterOpts) (*PolygonzkevmbridgeNewWrappedTokenIterator, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.FilterLogs(opts, "NewWrappedToken") + if err != nil { + return nil, err + } + return &PolygonzkevmbridgeNewWrappedTokenIterator{contract: _Polygonzkevmbridge.contract, event: "NewWrappedToken", logs: logs, sub: sub}, nil +} + +// WatchNewWrappedToken is a free log subscription operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. +// +// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchNewWrappedToken(opts *bind.WatchOpts, sink chan<- *PolygonzkevmbridgeNewWrappedToken) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevmbridge.contract.WatchLogs(opts, "NewWrappedToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmbridgeNewWrappedToken) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "NewWrappedToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewWrappedToken is a log parse operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. +// +// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) +func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) ParseNewWrappedToken(log types.Log) (*PolygonzkevmbridgeNewWrappedToken, error) { + event := new(PolygonzkevmbridgeNewWrappedToken) + if err := _Polygonzkevmbridge.contract.UnpackLog(event, "NewWrappedToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/etherman/smartcontracts/polygonzkevmglobalexitroot/polygonzkevmglobalexitroot.go b/etherman/smartcontracts/polygonzkevmglobalexitroot/polygonzkevmglobalexitroot.go new file mode 100644 index 0000000000..9b1129b044 --- /dev/null +++ b/etherman/smartcontracts/polygonzkevmglobalexitroot/polygonzkevmglobalexitroot.go @@ -0,0 +1,717 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package polygonzkevmglobalexitroot + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// PolygonzkevmglobalexitrootMetaData contains all meta data concerning the Polygonzkevmglobalexitroot contract. +var PolygonzkevmglobalexitrootMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"}],\"name\":\"UpdateGlobalExitRoot\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastGlobalExitRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"globalExitRootMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollupAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bridgeAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastMainnetExitRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRollupExitRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newRoot\",\"type\":\"bytes32\"}],\"name\":\"updateExitRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b506104f3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461015e57600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b7366004610455565b60036020526000908152604090205481565b61009660025481565b6100e56100e0366004610455565b610171565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e36600461048a565b6102f3565b600554610146906001600160a01b031681565b6040516001600160a01b0390911681526020016100a0565b600454610146906001600160a01b031681565b6005546001600160a01b031633148061019457506004546001600160a01b031633145b6102315760405162461bcd60e51b815260206004820152604260248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f743a3a7570646160448201527f746545786974526f6f743a204f6e6c7920616c6c6f77656420636f6e7472616360648201527f7473000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6005546001600160a01b031633036102495760018190555b6004546001600160a01b031633036102615760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036102ef57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103135750600054600160ff909116105b8061032d5750303b15801561032d575060005460ff166001145b61039f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610228565b6000805460ff1916600117905580156103c2576000805461ff0019166101001790555b600580546001600160a01b038086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560048054928516929091169190911790558015610450576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561046757600080fd5b5035919050565b80356001600160a01b038116811461048557600080fd5b919050565b6000806040838503121561049d57600080fd5b6104a68361046e565b91506104b46020840161046e565b9050925092905056fea26469706673582212204755a4cbf50d99cfafb99c5429e784137da120dba2e519fdf39654b3c4a8a5d864736f6c634300080f0033", +} + +// PolygonzkevmglobalexitrootABI is the input ABI used to generate the binding from. +// Deprecated: Use PolygonzkevmglobalexitrootMetaData.ABI instead. +var PolygonzkevmglobalexitrootABI = PolygonzkevmglobalexitrootMetaData.ABI + +// PolygonzkevmglobalexitrootBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PolygonzkevmglobalexitrootMetaData.Bin instead. +var PolygonzkevmglobalexitrootBin = PolygonzkevmglobalexitrootMetaData.Bin + +// DeployPolygonzkevmglobalexitroot deploys a new Ethereum contract, binding an instance of Polygonzkevmglobalexitroot to it. +func DeployPolygonzkevmglobalexitroot(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Polygonzkevmglobalexitroot, error) { + parsed, err := PolygonzkevmglobalexitrootMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PolygonzkevmglobalexitrootBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Polygonzkevmglobalexitroot{PolygonzkevmglobalexitrootCaller: PolygonzkevmglobalexitrootCaller{contract: contract}, PolygonzkevmglobalexitrootTransactor: PolygonzkevmglobalexitrootTransactor{contract: contract}, PolygonzkevmglobalexitrootFilterer: PolygonzkevmglobalexitrootFilterer{contract: contract}}, nil +} + +// Polygonzkevmglobalexitroot is an auto generated Go binding around an Ethereum contract. +type Polygonzkevmglobalexitroot struct { + PolygonzkevmglobalexitrootCaller // Read-only binding to the contract + PolygonzkevmglobalexitrootTransactor // Write-only binding to the contract + PolygonzkevmglobalexitrootFilterer // Log filterer for contract events +} + +// PolygonzkevmglobalexitrootCaller is an auto generated read-only Go binding around an Ethereum contract. +type PolygonzkevmglobalexitrootCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmglobalexitrootTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PolygonzkevmglobalexitrootTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmglobalexitrootFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PolygonzkevmglobalexitrootFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonzkevmglobalexitrootSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PolygonzkevmglobalexitrootSession struct { + Contract *Polygonzkevmglobalexitroot // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonzkevmglobalexitrootCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PolygonzkevmglobalexitrootCallerSession struct { + Contract *PolygonzkevmglobalexitrootCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PolygonzkevmglobalexitrootTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PolygonzkevmglobalexitrootTransactorSession struct { + Contract *PolygonzkevmglobalexitrootTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonzkevmglobalexitrootRaw is an auto generated low-level Go binding around an Ethereum contract. +type PolygonzkevmglobalexitrootRaw struct { + Contract *Polygonzkevmglobalexitroot // Generic contract binding to access the raw methods on +} + +// PolygonzkevmglobalexitrootCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PolygonzkevmglobalexitrootCallerRaw struct { + Contract *PolygonzkevmglobalexitrootCaller // Generic read-only contract binding to access the raw methods on +} + +// PolygonzkevmglobalexitrootTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PolygonzkevmglobalexitrootTransactorRaw struct { + Contract *PolygonzkevmglobalexitrootTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPolygonzkevmglobalexitroot creates a new instance of Polygonzkevmglobalexitroot, bound to a specific deployed contract. +func NewPolygonzkevmglobalexitroot(address common.Address, backend bind.ContractBackend) (*Polygonzkevmglobalexitroot, error) { + contract, err := bindPolygonzkevmglobalexitroot(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Polygonzkevmglobalexitroot{PolygonzkevmglobalexitrootCaller: PolygonzkevmglobalexitrootCaller{contract: contract}, PolygonzkevmglobalexitrootTransactor: PolygonzkevmglobalexitrootTransactor{contract: contract}, PolygonzkevmglobalexitrootFilterer: PolygonzkevmglobalexitrootFilterer{contract: contract}}, nil +} + +// NewPolygonzkevmglobalexitrootCaller creates a new read-only instance of Polygonzkevmglobalexitroot, bound to a specific deployed contract. +func NewPolygonzkevmglobalexitrootCaller(address common.Address, caller bind.ContractCaller) (*PolygonzkevmglobalexitrootCaller, error) { + contract, err := bindPolygonzkevmglobalexitroot(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PolygonzkevmglobalexitrootCaller{contract: contract}, nil +} + +// NewPolygonzkevmglobalexitrootTransactor creates a new write-only instance of Polygonzkevmglobalexitroot, bound to a specific deployed contract. +func NewPolygonzkevmglobalexitrootTransactor(address common.Address, transactor bind.ContractTransactor) (*PolygonzkevmglobalexitrootTransactor, error) { + contract, err := bindPolygonzkevmglobalexitroot(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PolygonzkevmglobalexitrootTransactor{contract: contract}, nil +} + +// NewPolygonzkevmglobalexitrootFilterer creates a new log filterer instance of Polygonzkevmglobalexitroot, bound to a specific deployed contract. +func NewPolygonzkevmglobalexitrootFilterer(address common.Address, filterer bind.ContractFilterer) (*PolygonzkevmglobalexitrootFilterer, error) { + contract, err := bindPolygonzkevmglobalexitroot(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PolygonzkevmglobalexitrootFilterer{contract: contract}, nil +} + +// bindPolygonzkevmglobalexitroot binds a generic wrapper to an already deployed contract. +func bindPolygonzkevmglobalexitroot(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(PolygonzkevmglobalexitrootABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonzkevmglobalexitroot.Contract.PolygonzkevmglobalexitrootCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.PolygonzkevmglobalexitrootTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.PolygonzkevmglobalexitrootTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonzkevmglobalexitroot.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.contract.Transact(opts, method, params...) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevmglobalexitroot.contract.Call(opts, &out, "bridgeAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) BridgeAddress() (common.Address, error) { + return _Polygonzkevmglobalexitroot.Contract.BridgeAddress(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCallerSession) BridgeAddress() (common.Address, error) { + return _Polygonzkevmglobalexitroot.Contract.BridgeAddress(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// GetLastGlobalExitRoot is a free data retrieval call binding the contract method 0x3ed691ef. +// +// Solidity: function getLastGlobalExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCaller) GetLastGlobalExitRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygonzkevmglobalexitroot.contract.Call(opts, &out, "getLastGlobalExitRoot") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetLastGlobalExitRoot is a free data retrieval call binding the contract method 0x3ed691ef. +// +// Solidity: function getLastGlobalExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) GetLastGlobalExitRoot() ([32]byte, error) { + return _Polygonzkevmglobalexitroot.Contract.GetLastGlobalExitRoot(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// GetLastGlobalExitRoot is a free data retrieval call binding the contract method 0x3ed691ef. +// +// Solidity: function getLastGlobalExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCallerSession) GetLastGlobalExitRoot() ([32]byte, error) { + return _Polygonzkevmglobalexitroot.Contract.GetLastGlobalExitRoot(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// GlobalExitRootMap is a free data retrieval call binding the contract method 0x257b3632. +// +// Solidity: function globalExitRootMap(bytes32 ) view returns(uint256) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCaller) GlobalExitRootMap(opts *bind.CallOpts, arg0 [32]byte) (*big.Int, error) { + var out []interface{} + err := _Polygonzkevmglobalexitroot.contract.Call(opts, &out, "globalExitRootMap", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GlobalExitRootMap is a free data retrieval call binding the contract method 0x257b3632. +// +// Solidity: function globalExitRootMap(bytes32 ) view returns(uint256) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) GlobalExitRootMap(arg0 [32]byte) (*big.Int, error) { + return _Polygonzkevmglobalexitroot.Contract.GlobalExitRootMap(&_Polygonzkevmglobalexitroot.CallOpts, arg0) +} + +// GlobalExitRootMap is a free data retrieval call binding the contract method 0x257b3632. +// +// Solidity: function globalExitRootMap(bytes32 ) view returns(uint256) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCallerSession) GlobalExitRootMap(arg0 [32]byte) (*big.Int, error) { + return _Polygonzkevmglobalexitroot.Contract.GlobalExitRootMap(&_Polygonzkevmglobalexitroot.CallOpts, arg0) +} + +// LastMainnetExitRoot is a free data retrieval call binding the contract method 0x319cf735. +// +// Solidity: function lastMainnetExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCaller) LastMainnetExitRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygonzkevmglobalexitroot.contract.Call(opts, &out, "lastMainnetExitRoot") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// LastMainnetExitRoot is a free data retrieval call binding the contract method 0x319cf735. +// +// Solidity: function lastMainnetExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) LastMainnetExitRoot() ([32]byte, error) { + return _Polygonzkevmglobalexitroot.Contract.LastMainnetExitRoot(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// LastMainnetExitRoot is a free data retrieval call binding the contract method 0x319cf735. +// +// Solidity: function lastMainnetExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCallerSession) LastMainnetExitRoot() ([32]byte, error) { + return _Polygonzkevmglobalexitroot.Contract.LastMainnetExitRoot(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// LastRollupExitRoot is a free data retrieval call binding the contract method 0x01fd9044. +// +// Solidity: function lastRollupExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCaller) LastRollupExitRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygonzkevmglobalexitroot.contract.Call(opts, &out, "lastRollupExitRoot") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// LastRollupExitRoot is a free data retrieval call binding the contract method 0x01fd9044. +// +// Solidity: function lastRollupExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) LastRollupExitRoot() ([32]byte, error) { + return _Polygonzkevmglobalexitroot.Contract.LastRollupExitRoot(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// LastRollupExitRoot is a free data retrieval call binding the contract method 0x01fd9044. +// +// Solidity: function lastRollupExitRoot() view returns(bytes32) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCallerSession) LastRollupExitRoot() ([32]byte, error) { + return _Polygonzkevmglobalexitroot.Contract.LastRollupExitRoot(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// RollupAddress is a free data retrieval call binding the contract method 0x5ec6a8df. +// +// Solidity: function rollupAddress() view returns(address) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCaller) RollupAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonzkevmglobalexitroot.contract.Call(opts, &out, "rollupAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RollupAddress is a free data retrieval call binding the contract method 0x5ec6a8df. +// +// Solidity: function rollupAddress() view returns(address) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) RollupAddress() (common.Address, error) { + return _Polygonzkevmglobalexitroot.Contract.RollupAddress(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// RollupAddress is a free data retrieval call binding the contract method 0x5ec6a8df. +// +// Solidity: function rollupAddress() view returns(address) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootCallerSession) RollupAddress() (common.Address, error) { + return _Polygonzkevmglobalexitroot.Contract.RollupAddress(&_Polygonzkevmglobalexitroot.CallOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _rollupAddress, address _bridgeAddress) returns() +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootTransactor) Initialize(opts *bind.TransactOpts, _rollupAddress common.Address, _bridgeAddress common.Address) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.contract.Transact(opts, "initialize", _rollupAddress, _bridgeAddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _rollupAddress, address _bridgeAddress) returns() +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) Initialize(_rollupAddress common.Address, _bridgeAddress common.Address) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.Initialize(&_Polygonzkevmglobalexitroot.TransactOpts, _rollupAddress, _bridgeAddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _rollupAddress, address _bridgeAddress) returns() +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootTransactorSession) Initialize(_rollupAddress common.Address, _bridgeAddress common.Address) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.Initialize(&_Polygonzkevmglobalexitroot.TransactOpts, _rollupAddress, _bridgeAddress) +} + +// UpdateExitRoot is a paid mutator transaction binding the contract method 0x33d6247d. +// +// Solidity: function updateExitRoot(bytes32 newRoot) returns() +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootTransactor) UpdateExitRoot(opts *bind.TransactOpts, newRoot [32]byte) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.contract.Transact(opts, "updateExitRoot", newRoot) +} + +// UpdateExitRoot is a paid mutator transaction binding the contract method 0x33d6247d. +// +// Solidity: function updateExitRoot(bytes32 newRoot) returns() +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootSession) UpdateExitRoot(newRoot [32]byte) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.UpdateExitRoot(&_Polygonzkevmglobalexitroot.TransactOpts, newRoot) +} + +// UpdateExitRoot is a paid mutator transaction binding the contract method 0x33d6247d. +// +// Solidity: function updateExitRoot(bytes32 newRoot) returns() +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootTransactorSession) UpdateExitRoot(newRoot [32]byte) (*types.Transaction, error) { + return _Polygonzkevmglobalexitroot.Contract.UpdateExitRoot(&_Polygonzkevmglobalexitroot.TransactOpts, newRoot) +} + +// PolygonzkevmglobalexitrootInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Polygonzkevmglobalexitroot contract. +type PolygonzkevmglobalexitrootInitializedIterator struct { + Event *PolygonzkevmglobalexitrootInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmglobalexitrootInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmglobalexitrootInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmglobalexitrootInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmglobalexitrootInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmglobalexitrootInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmglobalexitrootInitialized represents a Initialized event raised by the Polygonzkevmglobalexitroot contract. +type PolygonzkevmglobalexitrootInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootFilterer) FilterInitialized(opts *bind.FilterOpts) (*PolygonzkevmglobalexitrootInitializedIterator, error) { + + logs, sub, err := _Polygonzkevmglobalexitroot.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PolygonzkevmglobalexitrootInitializedIterator{contract: _Polygonzkevmglobalexitroot.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PolygonzkevmglobalexitrootInitialized) (event.Subscription, error) { + + logs, sub, err := _Polygonzkevmglobalexitroot.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmglobalexitrootInitialized) + if err := _Polygonzkevmglobalexitroot.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootFilterer) ParseInitialized(log types.Log) (*PolygonzkevmglobalexitrootInitialized, error) { + event := new(PolygonzkevmglobalexitrootInitialized) + if err := _Polygonzkevmglobalexitroot.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonzkevmglobalexitrootUpdateGlobalExitRootIterator is returned from FilterUpdateGlobalExitRoot and is used to iterate over the raw logs and unpacked data for UpdateGlobalExitRoot events raised by the Polygonzkevmglobalexitroot contract. +type PolygonzkevmglobalexitrootUpdateGlobalExitRootIterator struct { + Event *PolygonzkevmglobalexitrootUpdateGlobalExitRoot // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonzkevmglobalexitrootUpdateGlobalExitRootIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmglobalexitrootUpdateGlobalExitRoot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonzkevmglobalexitrootUpdateGlobalExitRoot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonzkevmglobalexitrootUpdateGlobalExitRootIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonzkevmglobalexitrootUpdateGlobalExitRootIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonzkevmglobalexitrootUpdateGlobalExitRoot represents a UpdateGlobalExitRoot event raised by the Polygonzkevmglobalexitroot contract. +type PolygonzkevmglobalexitrootUpdateGlobalExitRoot struct { + MainnetExitRoot [32]byte + RollupExitRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateGlobalExitRoot is a free log retrieval operation binding the contract event 0x61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce3. +// +// Solidity: event UpdateGlobalExitRoot(bytes32 indexed mainnetExitRoot, bytes32 indexed rollupExitRoot) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootFilterer) FilterUpdateGlobalExitRoot(opts *bind.FilterOpts, mainnetExitRoot [][32]byte, rollupExitRoot [][32]byte) (*PolygonzkevmglobalexitrootUpdateGlobalExitRootIterator, error) { + + var mainnetExitRootRule []interface{} + for _, mainnetExitRootItem := range mainnetExitRoot { + mainnetExitRootRule = append(mainnetExitRootRule, mainnetExitRootItem) + } + var rollupExitRootRule []interface{} + for _, rollupExitRootItem := range rollupExitRoot { + rollupExitRootRule = append(rollupExitRootRule, rollupExitRootItem) + } + + logs, sub, err := _Polygonzkevmglobalexitroot.contract.FilterLogs(opts, "UpdateGlobalExitRoot", mainnetExitRootRule, rollupExitRootRule) + if err != nil { + return nil, err + } + return &PolygonzkevmglobalexitrootUpdateGlobalExitRootIterator{contract: _Polygonzkevmglobalexitroot.contract, event: "UpdateGlobalExitRoot", logs: logs, sub: sub}, nil +} + +// WatchUpdateGlobalExitRoot is a free log subscription operation binding the contract event 0x61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce3. +// +// Solidity: event UpdateGlobalExitRoot(bytes32 indexed mainnetExitRoot, bytes32 indexed rollupExitRoot) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootFilterer) WatchUpdateGlobalExitRoot(opts *bind.WatchOpts, sink chan<- *PolygonzkevmglobalexitrootUpdateGlobalExitRoot, mainnetExitRoot [][32]byte, rollupExitRoot [][32]byte) (event.Subscription, error) { + + var mainnetExitRootRule []interface{} + for _, mainnetExitRootItem := range mainnetExitRoot { + mainnetExitRootRule = append(mainnetExitRootRule, mainnetExitRootItem) + } + var rollupExitRootRule []interface{} + for _, rollupExitRootItem := range rollupExitRoot { + rollupExitRootRule = append(rollupExitRootRule, rollupExitRootItem) + } + + logs, sub, err := _Polygonzkevmglobalexitroot.contract.WatchLogs(opts, "UpdateGlobalExitRoot", mainnetExitRootRule, rollupExitRootRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonzkevmglobalexitrootUpdateGlobalExitRoot) + if err := _Polygonzkevmglobalexitroot.contract.UnpackLog(event, "UpdateGlobalExitRoot", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdateGlobalExitRoot is a log parse operation binding the contract event 0x61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce3. +// +// Solidity: event UpdateGlobalExitRoot(bytes32 indexed mainnetExitRoot, bytes32 indexed rollupExitRoot) +func (_Polygonzkevmglobalexitroot *PolygonzkevmglobalexitrootFilterer) ParseUpdateGlobalExitRoot(log types.Log) (*PolygonzkevmglobalexitrootUpdateGlobalExitRoot, error) { + event := new(PolygonzkevmglobalexitrootUpdateGlobalExitRoot) + if err := _Polygonzkevmglobalexitroot.contract.UnpackLog(event, "UpdateGlobalExitRoot", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/etherman/smartcontracts/proofofefficiency/proofofefficiency.go b/etherman/smartcontracts/proofofefficiency/proofofefficiency.go deleted file mode 100644 index 88433fbb19..0000000000 --- a/etherman/smartcontracts/proofofefficiency/proofofefficiency.go +++ /dev/null @@ -1,4554 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package proofofefficiency - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription -) - -// ProofOfEfficiencyBatchData is an auto generated low-level Go binding around an user-defined struct. -type ProofOfEfficiencyBatchData struct { - Transactions []byte - GlobalExitRoot [32]byte - Timestamp uint64 - MinForcedTimestamp uint64 -} - -// ProofOfEfficiencyForcedBatchData is an auto generated low-level Go binding around an user-defined struct. -type ProofOfEfficiencyForcedBatchData struct { - Transactions []byte - GlobalExitRoot [32]byte - MinForcedTimestamp uint64 -} - -// ProofOfEfficiencyInitializePackedParameters is an auto generated low-level Go binding around an user-defined struct. -type ProofOfEfficiencyInitializePackedParameters struct { - Admin common.Address - ChainID uint64 - TrustedSequencer common.Address - PendingStateTimeout uint64 - ForceBatchAllowed bool - TrustedAggregator common.Address - TrustedAggregatorTimeout uint64 -} - -// ProofofefficiencyMetaData contains all meta data concerning the Proofofefficiency contract. -var ProofofefficiencyMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"ConsolidatePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"OverridePendingState\",\"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\":\"storedStateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provedStateRoot\",\"type\":\"bytes32\"}],\"name\":\"ProveNonDeterministicPendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newForceBatchAllowed\",\"type\":\"bool\"}],\"name\":\"SetForceBatchAllowed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"SetPendingStateTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"SetTrustedAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"SetTrustedAggregatorTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"TrustedVerifyBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FORCE_BATCH_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HALT_AGGREGATION_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TRANSACTIONS_BYTE_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_VERIFY_BATCHES\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_BATCH_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERIFY_BATCH_TIME_TARGET\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequencedBatchNum\",\"type\":\"uint64\"}],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"batchNumToStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculateRewardPerBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"consolidatePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maticAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBatchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oldStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"}],\"name\":\"getInputSnarkBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIGlobalExitRootManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIGlobalExitRootManager\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_matic\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"_rollupVerifier\",\"type\":\"address\"},{\"internalType\":\"contractIBridge\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainID\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trustedSequencer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateTimeout\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceBatchAllowed\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"trustedAggregator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"trustedAggregatorTimeout\",\"type\":\"uint64\"}],\"internalType\":\"structProofOfEfficiency.InitializePackedParameters\",\"name\":\"initializePackedParameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"genesisRoot\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_trustedSequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"isPendingStateConsolidable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingState\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingStateConsolidated\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"matic\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"overridePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingStateTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingStateTransitions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"proveNonDeterministicPendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupVerifier\",\"outputs\":[{\"internalType\":\"contractIVerifierRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structProofOfEfficiency.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structProofOfEfficiency.ForcedBatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"sequencedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"accInputHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequencedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"previousLastBatchSequenced\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"newForceBatchAllowed\",\"type\":\"bool\"}],\"name\":\"setForceBatchAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"setPendingStateTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"setTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"setTrustedAggregatorTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregatorTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"trustedVerifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"verifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50615e7880620000216000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c80638c4a0af7116101de578063d8d1091b1161010f578063e8bf92ed116100ad578063f1d7b21c1161007c578063f1d7b21c14610876578063f2fde38b1461087e578063f851a44014610891578063f8b823e4146108a457600080fd5b8063e8bf92ed1461082a578063eaeb077b1461083d578063edc4112114610850578063f14916d61461086357600080fd5b8063dbc16976116100e9578063dbc16976146107ec578063e11f3f18146107f4578063e217cfd614610807578063e7a7ed021461081057600080fd5b8063d8d1091b146107ab578063d8f54db0146107be578063d939b315146107d257600080fd5b8063adc879e91161017c578063c0ed84e011610156578063c0ed84e014610763578063c89e42df1461076b578063cfa8ed471461077e578063d02103ca1461079857600080fd5b8063adc879e9146106d1578063b4d63f58146106eb578063b6b0b0971461074b57600080fd5b80639c9f3dfe116101b85780639c9f3dfe146106995780639f0d039d146106ac578063a3c573eb146106b4578063ab9fc5ef146106c757600080fd5b80638c4a0af71461066d5780638da5cb5b1461068057806399f5634e1461069157600080fd5b80634a1a89a7116102c3578063704b6c02116102615780637fcb3653116102305780637fcb3653146105c8578063837a4738146105db578063841b24d7146106495780638b48931e1461066357600080fd5b8063704b6c0214610587578063715018a61461059a5780637215541a146105a257806375c508b3146105b557600080fd5b8063542028d51161029d578063542028d51461053957806360943d6a146105415780636b8616ce146105545780636ff512cc1461057457600080fd5b80634a1a89a7146104ec5780634a910e6a146105065780635392c5e01461051957600080fd5b8063383b3be811610330578063423fa8561161030a578063423fa8561461049257806345605267146104ac578063458c0477146104c65780634834a343146104d957600080fd5b8063383b3be814610457578063394218e91461046a5780633c1582671461047f57600080fd5b806319d8ac611161036c57806319d8ac61146103ef578063220d78991461040257806329878983146104155780632d0889d31461044057600080fd5b8063107bf28c14610393578063137f1edf146103b157806315064c96146103d2575b600080fd5b61039b6108ad565b6040516103a891906152b6565b60405180910390f35b6103ba61070881565b6040516001600160401b0390911681526020016103a8565b6065546103df9060ff1681565b60405190151581526020016103a8565b6068546103ba906001600160401b031681565b61039b6104103660046152e5565b61093b565b606a54610428906001600160a01b031681565b6040516001600160a01b0390911681526020016103a8565b61044961ea6081565b6040519081526020016103a8565b6103df610465366004615332565b610afe565b61047d610478366004615332565b610b45565b005b61047d61048d36600461546f565b610d6e565b6068546103ba90600160401b90046001600160401b031681565b6068546103ba90600160801b90046001600160401b031681565b6072546103ba906001600160401b031681565b61047d6104e73660046155ad565b6116d0565b6072546103ba90600160401b90046001600160401b031681565b61047d610514366004615332565b611ab0565b610449610527366004615332565b606d6020526000908152604090205481565b61039b611d73565b61047d61054f36600461564f565b611d80565b610449610562366004615332565b60666020526000908152604090205481565b61047d610582366004615726565b612116565b61047d610595366004615726565b6121f0565b61047d6122a9565b61047d6105b0366004615332565b6122bd565b61047d6105c3366004615743565b612578565b6069546103ba906001600160401b031681565b61061e6105e93660046157e1565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103a8565b6072546103ba90600160c01b90046001600160401b031681565b6103ba62093a8081565b61047d61067b366004615808565b612668565b6033546001600160a01b0316610428565b610449612720565b61047d6106a7366004615332565b61281a565b607454610449565b607054610428906001600160a01b031681565b6103ba6206978081565b606c546103ba90600160a81b90046001600160401b031681565b6107266106f9366004615332565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103a8565b6065546104289061010090046001600160a01b031681565b6103ba612a31565b61047d610779366004615825565b612a7e565b60695461042890600160401b90046001600160a01b031681565b606c54610428906001600160a01b031681565b61047d6107b9366004615861565b612b25565b606c546103df90600160a01b900460ff1681565b6072546103ba90600160801b90046001600160401b031681565b61047d6131a3565b61047d610802366004615743565b6132f6565b6103ba6103e881565b6068546103ba90600160c01b90046001600160401b031681565b606b54610428906001600160a01b031681565b61047d61084b366004615953565b6134cb565b61047d61085e3660046155ad565b61390b565b61047d610871366004615726565b613a94565b610449600b81565b61047d61088c366004615726565b613b4d565b607354610428906001600160a01b031681565b61044960745481565b606f80546108ba90615997565b80601f01602080910402602001604051908101604052809291908181526020018280546108e690615997565b80156109335780601f1061090857610100808354040283529160200191610933565b820191906000526020600020905b81548152906001019060200180831161091657829003601f168201915b505050505081565b6001600160401b0380861660008181526067602052604080822054938816825290205460609291158061096d57508115155b6109f25760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f7420606482015264195e1a5cdd60da1b608482015260a4015b60405180910390fd5b80610a735760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f7420606482015264195e1a5cdd60da1b608482015260a4016109e9565b606c54604080516bffffffffffffffffffffffff193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610b3492600160801b909204811691166159e7565b6001600160401b0316111592915050565b6073546001600160a01b03163314610bb05760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b62093a806001600160401b0382161115610c455760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a73657450656e64696e6753746160448201527f746554696d656f75743a206578636565642068616c74206167677265676174696064820152691bdb881d1a5b595bdd5d60b21b608482015260a4016109e9565b60655460ff16610d00576072546001600160401b03600160c01b909104811690821610610d005760405162461bcd60e51b815260206004820152604960248201527f50726f6f664f66456666696369656e63793a3a7365745472757374656441676760448201527f72656761746f7254696d656f75743a206e65772074696d656f7574206d75737460648201527f206265206c6f7765720000000000000000000000000000000000000000000000608482015260a4016109e9565b6072805477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1906020015b60405180910390a150565b60655460ff1615610df25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b606954600160401b90046001600160a01b03163314610e795760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016109e9565b805180610ef95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e63652031206261746064820152610c6d60f31b608482015260a4016109e9565b6103e88110610f965760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2043616e6e6f742073657175656e63652074686174206d616e7920626160648201527f7463686573000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156114e5576000878281518110610fe957610fe9615a12565b60200260200101519050600081606001516001600160401b031611156111cb578361101381615a28565b94505060008160000151805190602001208260200151836060015160405160200161105e93929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051601f1981840301815291815281516020928301206001600160401b03881660009081526066909352912054909150811461110f5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a4016109e9565b81606001516001600160401b031682604001516001600160401b031610156111c55760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016109e9565b5061137e565b6020810151158061126d5750606c5460208201516040517f257b36320000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163257b3632916112279160040190815260200190565b6020604051808303816000875af1158015611246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126a9190615a4e565b15155b6112df5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016109e9565b80515161ea601161137e5760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f664566666963696550656e64696e67537461746563793a3a736560448201527f7175656e6365426174636865733a205472616e73616374696f6e73206279746560648201527f73206f766572666c6f7700000000000000000000000000000000000000000000608482015260a4016109e9565b856001600160401b031681604001516001600160401b0316101580156113b157504281604001516001600160401b031611155b6114495760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c0160405160208183030381529060405280519060200120925084806114c790615a28565b955050806040015195505080806114dd90615a67565b915050610fcd565b506068546001600160401b03600160c01b909104811690831611156115725760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016109e9565b60685460009061159290600160801b90046001600160401b031684615a80565b6115a5906001600160401b031687615aa8565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166fffffffffffffffffffffffffffffffff199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b92871692909202919091179055607454909150611681903390309084906116689190615abf565b60655461010090046001600160a01b0316929190613bda565b611689613c8b565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156117545760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b6072546001600160401b03878116600090815260676020526040902060010154429261178b92600160c01b909104811691166159e7565b6001600160401b0316111561182e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20747275737465642061676772656761746f722074696d656f7574206e6f7460648201527f2065787069726564000000000000000000000000000000000000000000000000608482015260a4016109e9565b6103e861183b8888615a80565b6001600160401b0316106118c15760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2063616e6e6f74207665726966792074686174206d616e79206261746368656064820152607360f81b608482015260a4016109e9565b6118d18888888888888888613d2f565b6118da866142b4565b607254600160801b90046001600160401b03166000036119ab576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d60205260409020859055607254161561194857607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561198e57600080fd5b505af11580156119a2573d6000803e3d6000fd5b50505050611a65565b6119b3613c8b565b607280546001600160401b03169060006119cc83615a28565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026fffffffffffffffffffffffffffffffff199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b6001600160401b03811615801590611add57506072546001600160401b03600160401b9091048116908216115b8015611af857506072546001600160401b0390811690821611155b611b905760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a636f6e736f6c6964617465506560448201527f6e64696e6753746174653a2070656e64696e6753746174654e756d206d75737460648201527f20696e76616c6964000000000000000000000000000000000000000000000000608482015260a4016109e9565b606a546001600160a01b03163314611c4357611bab81610afe565b611c435760405162461bcd60e51b815260206004820152605960248201527f50726f6f664f66456666696369656e63793a3a636f6e736f6c6964617465506560448201527f6e64696e6753746174653a2070656e64696e67207374617465206973206e6f7460648201527f20726561647920746f20626520636f6e736f6c69646174656400000000000000608482015260a4016109e9565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d9094529382902092909255607280546fffffffffffffffff000000000000000019169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b158015611d0557600080fd5b505af1158015611d19573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051611d6691815260200190565b60405180910390a3505050565b606e80546108ba90615997565b600054610100900460ff1615808015611da05750600054600160ff909116105b80611dba5750303b158015611dba575060005460ff166001145b611e2c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109e9565b6000805460ff191660011790558015611e4f576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008c851602179055606b805482168a841617905560708054909116918816919091179055611eca6020860186615726565b607380546001600160a01b0319166001600160a01b0392909216919091179055611efa6060860160408701615726565b606980546001600160a01b0392909216600160401b027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055611f4a60c0860160a08701615726565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611fa760e0860160c08701615332565b607280546001600160401b0392909216600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055611fef6040860160208701615332565b606c80546001600160401b0392909216600160a81b027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff90921691909117905561203f6080860160608701615332565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b1990921691909117905561207b60a0860160808701615808565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e6120a38482615b24565b50606f6120b08382615b24565b50670de0b6b3a76400006074556120c56144d6565b801561210b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146121815760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff16600160401b6001600160a01b038416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610d63565b6073546001600160a01b0316331461225b5760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b607380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190602001610d63565b6122b161455c565b6122bb60006145b6565b565b6033546001600160a01b0316331461256d576072546000906001600160401b03161561230e57506072546001600160401b03908116600090815260716020526040902054600160401b90041661231c565b506069546001600160401b03165b80826001600160401b0316116123c05760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a6163746976617465456d65726760448201527f656e637953746174653a20426174636820616c7265616479207665726966696560648201527f6400000000000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6068546001600160401b03600160401b90910481169083161180159061240257506001600160401b038083166000908152606760205260409020600101541615155b61249a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a6163746976617465456d65726760448201527f656e637953746174653a204261746368206e6f742073657175656e636564206f60648201527f72206e6f7420656e64206f662073657175656e63650000000000000000000000608482015260a4016109e9565b6001600160401b0380831660009081526067602052604090206001015442916124c89162093a8091166159e7565b6001600160401b0316111561256b5760405162461bcd60e51b815260206004820152605260248201527f50726f6f664f66456666696369656e63793a3a6163746976617465456d65726760448201527f656e637953746174653a204167677265676174696f6e2068616c742074696d6560648201527f6f7574206973206e6f7420657870697265640000000000000000000000000000608482015260a4016109e9565b505b612575614608565b50565b60655460ff16156125fc5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b61260d898989898989898989614678565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a161210b614608565b6073546001600160a01b031633146126d35760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610d6390831515815260200190565b6065546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009182916101009091046001600160a01b0316906370a0823190602401602060405180830381865afa15801561278a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ae9190615a4e565b905060006127ba612a31565b6068546001600160401b03600160401b82048116916127ea91600160801b8204811691600160c01b900416615a80565b6127f491906159e7565b6127fe9190615a80565b6001600160401b031690506128138183615bf9565b9250505090565b6073546001600160a01b031633146128855760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b62093a806001600160401b038216111561291a5760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a73657450656e64696e6753746160448201527f746554696d656f75743a206578636565642068616c74206167677265676174696064820152691bdb881d1a5b595bdd5d60b21b608482015260a4016109e9565b60655460ff166129d6576072546001600160401b03600160801b9091048116908216106129d65760405162461bcd60e51b8152602060048201526044602482018190527f50726f6f664f66456666696369656e63793a3a73657450656e64696e67537461908201527f746554696d656f75743a206e65772074696d656f7574206d757374206265206c60648201527f6f77657200000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610d63565b6072546000906001600160401b031615612a6e57506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b03163314612ae95760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606e612af58282615b24565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610d6391906152b6565b60655460ff1615612ba95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b606c54600160a01b900460ff161515600114612c3e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f72636520626174636820697320616064820152677661696c61626c6560c01b608482015260a4016109e9565b805180612cbe5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c656173742031206261746064820152610c6d60f31b608482015260a4016109e9565b6103e88110612d3f5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2063616e6e6f74207665726966792074686174206d616e79206261746368656064820152607360f81b608482015260a4016109e9565b6068546001600160401b03600160c01b8204811691612d67918491600160801b900416615c0d565b1115612ddb5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016109e9565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b8481101561309c576000868281518110612e2857612e28615a12565b602002602001015190508380612e3d90615a28565b825180516020918201208185015160408087015181519485019390935283015260c01b6001600160c01b03191660608201529095506000915060680160408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612f455760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016109e9565b612f50600188615aa8565b830361300d5742620697808360400151612f6a91906159e7565b6001600160401b0316111561300d5760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016109e9565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b6001600160c01b031916608083015233901b6bffffffffffffffffffffffff19166088820152609c01604051602081830303815290604052805190602001209350858061308490615a28565b9650505050808061309490615a67565b915050612e0c565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166fffffffffffffffffffffffffffffffff199092169190911792861685029290921790915585547fffffffffffffffff00000000000000000000000000000000ffffffffffffffff1694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661321b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016109e9565b6073546001600160a01b031633146132865760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132d657600080fd5b505af11580156132ea573d6000803e3d6000fd5b505050506122bb614e28565b606a546001600160a01b031633146133805760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564416760448201527f6772656761746f723a206f6e6c7920747275737465642041676772656761746f6064820152603960f91b608482015260a4016109e9565b613391898989898989898989614678565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156133e557607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561342b57600080fd5b505af115801561343f573d6000803e3d6000fd5b50506072805477ffffffffffffffffffffffffffffffffffffffffffffffff167a093a80000000000000000000000000000000000000000000000000179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff161561354f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b606c54600160a01b900460ff1615156001146135e45760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f72636520626174636820697320616064820152677661696c61626c6560c01b608482015260a4016109e9565b60006135ef60745490565b9050818111156136675760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016109e9565b61ea608351106136df5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016109e9565b6065546136fc9061010090046001600160a01b0316333084613bda565b606c54604080517f3ed691ef00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa15801561375f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137839190615a4e565b60688054919250600160c01b9091046001600160401b03169060186137a783615a28565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550508380519060200120814260405160200161380693929190928352602083019190915260c01b6001600160c01b031916604082015260480190565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b0316600090815260669093529120553233036138aa57606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613905565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9318233876040516138fc93929190615c25565b60405180910390a25b50505050565b606a546001600160a01b031633146139955760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564416760448201527f6772656761746f723a206f6e6c7920747275737465642041676772656761746f6064820152603960f91b608482015260a4016109e9565b6139a58888888888888888613d2f565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156139f957607280546fffffffffffffffffffffffffffffffff191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015613a3f57600080fd5b505af1158015613a53573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611a9e565b6073546001600160a01b03163314613aff5760405162461bcd60e51b815260206004820152602860248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7941646d696e3a206f6e604482015267363c9030b236b4b760c11b60648201526084016109e9565b606a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90602001610d63565b613b5561455c565b6001600160a01b038116613bd15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109e9565b612575816145b6565b6040516001600160a01b03808516602483015283166044820152606481018290526139059085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614ed5565b6072546001600160401b03600160401b82048116911611156122bb57607254600090613cc890600160401b90046001600160401b031660016159e7565b9050613cd381610afe565b1561257557607254600090600290613cf59084906001600160401b0316615a80565b613cff9190615c56565b613d0990836159e7565b9050613d1481610afe565b15613d2657613d2281611ab0565b5050565b613d2282611ab0565b600080613d3a612a31565b90506001600160401b038a1615613ec6576072546001600160401b03908116908b161115613df65760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2070656e64696e6753746174654e756d206d757374206265206c657373206f60648201527f7220657175616c207468616e206c61737450656e64696e675374617465000000608482015260a4016109e9565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613ec05760405162461bcd60e51b815260206004820152605160248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206d617463682074686520706560648201527f6e64696e67207374617465206261746368000000000000000000000000000000608482015260a4016109e9565b50614033565b6001600160401b0389166000908152606d6020526040902054915081613f7a5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016109e9565b806001600160401b0316896001600160401b031611156140335760405162461bcd60e51b815260206004820152606260248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e2063757272656e744c61737456657269666965644261746084820152610c6d60f31b60a482015260c4016109e9565b806001600160401b0316886001600160401b0316116140e05760405162461bcd60e51b815260206004820152605c60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e2063757272656e744c6173745665726966696564426174636800000000608482015260a4016109e9565b60006140ef8a8a8a868b61093b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516141249190615c7c565b602060405180830381855afa158015614141573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141649190615a4e565b61416e9190615c98565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916141b2918b918b918b9190600401615cac565b602060405180830381865afa1580156141cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f39190615d26565b6142655760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016109e9565b6142a633614273858d615a80565b6001600160401b0316614284612720565b61428e9190615abf565b60655461010090046001600160a01b03169190614fbf565b505050505050505050505050565b60006142be612a31565b9050816000806142ce8484615a80565b6001600160401b031690505b836001600160401b0316836001600160401b031614614378576001600160401b0380851660009081526067602052604090206001810154909161070891614322911642615aa8565b111561435d57600181015461434790600160401b90046001600160401b031686615a80565b61435a906001600160401b031684615c0d565b92505b60010154600160401b90046001600160401b031692506142da565b60006143848383615aa8565b90508281101561442257600061439a8285615aa8565b6074549091505b60208211156143ed576d04ee2d6d415b85acef81000000006143c56020600b615e27565b6143cf9083615abf565b6143d99190615bf9565b90506143e6602083615aa8565b91506143a1565b6143f882600a615e36565b61440383600b615e36565b61440d9083615abf565b6144179190615bf9565b607455506144ce9050565b600061442e8483615aa8565b6074549091505b6020821115614481576d04ee2d6d415b85acef81000000006144596020600b615e27565b6144639083615abf565b61446d9190615bf9565b905061447a602083615aa8565b9150614435565b61448c82600a615e36565b61449783600b615e36565b6144a19083615abf565b6144ab9190615bf9565b9050806074546074546144be9190615abf565b6144c89190615bf9565b60745550505b505050505050565b600054610100900460ff166145535760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016109e9565b6122bb336145b6565b6033546001600160a01b031633146122bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109e9565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561465857600080fd5b505af115801561466c573d6000803e3d6000fd5b505050506122bb615008565b60006001600160401b038a161561484e576072546001600160401b03908116908b16111561475a5760405162461bcd60e51b815260206004820152607160248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2070656e64696e6753746160648201527f74654e756d206d757374206265206c657373206f7220657175616c207468616e60848201527f206c61737450656e64696e67537461746500000000000000000000000000000060a482015260c4016109e9565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146148485760405162461bcd60e51b815260206004820152606560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20696e69744e756d42617460648201527f6368206d757374206d61746368207468652070656e64696e672073746174652060848201527f626174636800000000000000000000000000000000000000000000000000000060a482015260c4016109e9565b506149d2565b506001600160401b0387166000908152606d6020526040902054806149015760405162461bcd60e51b815260206004820152605c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20696e69744e756d42617460648201527f636820737461746520726f6f7420646f6573206e6f7420657869737400000000608482015260a4016109e9565b6069546001600160401b0390811690891611156149d25760405162461bcd60e51b815260206004820152607660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20696e69744e756d42617460648201527f6368206d757374206265206c657373206f7220657175616c207468616e20637560848201527f7272656e744c617374566572696669656442617463680000000000000000000060a482015260c4016109e9565b6072546001600160401b03908116908a1611801590614a025750896001600160401b0316896001600160401b0316115b8015614a2357506072546001600160401b03600160401b9091048116908a16115b614abb5760405162461bcd60e51b815260206004820152605460248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2066696e616c50656e646960648201527f6e6753746174654e756d20696e636f7272656374000000000000000000000000608482015260a4016109e9565b6001600160401b03898116600090815260716020526040902054600160401b9004811690881614614ba05760405162461bcd60e51b815260206004820152606f60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2066696e616c4e6577426160648201527f746368206d75737420626520657175616c207468616e2063757272656e744c6160848201527f737456657269666965644261746368000000000000000000000000000000000060a482015260c4016109e9565b6000614baf898989858a61093b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051614be49190615c7c565b602060405180830381855afa158015614c01573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614c249190615a4e565b614c2e9190615c98565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614c72918a918a918a9190600401615cac565b602060405180830381865afa158015614c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cb39190615d26565b614d4b5760405162461bcd60e51b815260206004820152604360248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a20494e56414c49445f505260648201527f4f4f460000000000000000000000000000000000000000000000000000000000608482015260a4016109e9565b6001600160401b038b166000908152607160205260409020600201548790036142a65760405162461bcd60e51b815260206004820152606760248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696350656e64696e6753746174653a2073746f72656420726f6f60648201527f74206d75737420626520646966666572656e74207468616e206e65772073746160848201527f746520726f6f740000000000000000000000000000000000000000000000000060a482015260c4016109e9565b60655460ff16614ea05760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016109e9565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000614f2a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150c49092919063ffffffff16565b805190915015614fba5780806020019051810190614f489190615d26565b614fba5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109e9565b505050565b6040516001600160a01b038316602482015260448101829052614fba9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613c27565b60655460ff161561508c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4016109e9565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60606150d384846000856150dd565b90505b9392505050565b6060824710156151555760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016109e9565b6001600160a01b0385163b6151ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109e9565b600080866001600160a01b031685876040516151c89190615c7c565b60006040518083038185875af1925050503d8060008114615205576040519150601f19603f3d011682016040523d82523d6000602084013e61520a565b606091505b509150915061521a828286615225565b979650505050505050565b606083156152345750816150d6565b8251156152445782518084602001fd5b8160405162461bcd60e51b81526004016109e991906152b6565b60005b83811015615279578181015183820152602001615261565b838111156139055750506000910152565b600081518084526152a281602086016020860161525e565b601f01601f19169290920160200192915050565b6020815260006150d6602083018461528a565b80356001600160401b03811681146152e057600080fd5b919050565b600080600080600060a086880312156152fd57600080fd5b615306866152c9565b9450615314602087016152c9565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561534457600080fd5b6150d6826152c9565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156153855761538561534d565b60405290565b604051606081016001600160401b03811182821017156153855761538561534d565b604051601f8201601f191681016001600160401b03811182821017156153d5576153d561534d565b604052919050565b60006001600160401b038211156153f6576153f661534d565b5060051b60200190565b600082601f83011261541157600080fd5b81356001600160401b0381111561542a5761542a61534d565b61543d601f8201601f19166020016153ad565b81815284602083860101111561545257600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561548257600080fd5b82356001600160401b038082111561549957600080fd5b818501915085601f8301126154ad57600080fd5b81356154c06154bb826153dd565b6153ad565b81815260059190911b830184019084810190888311156154df57600080fd5b8585015b83811015615578578035858111156154fb5760008081fd5b86016080818c03601f19018113156155135760008081fd5b61551b615363565b898301358881111561552d5760008081fd5b61553b8e8c83870101615400565b8252506040808401358b83015260606155558186016152c9565b828401526155648486016152c9565b9083015250855250509186019186016154e3565b5098975050505050505050565b806040810183101561559657600080fd5b92915050565b806080810183101561559657600080fd5b6000806000806000806000806101a0898b0312156155ca57600080fd5b6155d3896152c9565b97506155e160208a016152c9565b96506155ef60408a016152c9565b9550606089013594506080890135935061560c8a60a08b01615585565b925061561b8a60e08b0161559c565b915061562b8a6101608b01615585565b90509295985092959890939650565b6001600160a01b038116811461257557600080fd5b600080600080600080600080888a036101c081121561566d57600080fd5b89356156788161563a565b985060208a01356156888161563a565b975060408a01356156988161563a565b965060608a01356156a88161563a565b955060e0607f19820112156156bc57600080fd5b5060808901935061016089013592506101808901356001600160401b03808211156156e657600080fd5b6156f28c838d01615400565b93506101a08b013591508082111561570957600080fd5b506157168b828c01615400565b9150509295985092959890939650565b60006020828403121561573857600080fd5b81356150d68161563a565b60008060008060008060008060006101c08a8c03121561576257600080fd5b61576b8a6152c9565b985061577960208b016152c9565b975061578760408b016152c9565b965061579560608b016152c9565b955060808a0135945060a08a013593506157b28b60c08c01615585565b92506157c28b6101008c0161559c565b91506157d28b6101808c01615585565b90509295985092959850929598565b6000602082840312156157f357600080fd5b5035919050565b801515811461257557600080fd5b60006020828403121561581a57600080fd5b81356150d6816157fa565b60006020828403121561583757600080fd5b81356001600160401b0381111561584d57600080fd5b61585984828501615400565b949350505050565b6000602080838503121561587457600080fd5b82356001600160401b038082111561588b57600080fd5b818501915085601f83011261589f57600080fd5b81356158ad6154bb826153dd565b81815260059190911b830184019084810190888311156158cc57600080fd5b8585015b83811015615578578035858111156158e85760008081fd5b86016060818c03601f19018113156159005760008081fd5b61590861538b565b898301358881111561591a5760008081fd5b6159288e8c83870101615400565b8252506040808401358b8301526159408385016152c9565b90820152855250509186019186016158d0565b6000806040838503121561596657600080fd5b82356001600160401b0381111561597c57600080fd5b61598885828601615400565b95602094909401359450505050565b600181811c908216806159ab57607f821691505b6020821081036159cb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115615a0957615a096159d1565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103615a4457615a446159d1565b6001019392505050565b600060208284031215615a6057600080fd5b5051919050565b600060018201615a7957615a796159d1565b5060010190565b60006001600160401b0383811690831681811015615aa057615aa06159d1565b039392505050565b600082821015615aba57615aba6159d1565b500390565b6000816000190483118215151615615ad957615ad96159d1565b500290565b601f821115614fba57600081815260208120601f850160051c81016020861015615b055750805b601f850160051c820191505b818110156144ce57828155600101615b11565b81516001600160401b03811115615b3d57615b3d61534d565b615b5181615b4b8454615997565b84615ade565b602080601f831160018114615b865760008415615b6e5750858301515b600019600386901b1c1916600185901b1785556144ce565b600085815260208120601f198616915b82811015615bb557888601518255948401946001909101908401615b96565b5085821015615bd35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b600082615c0857615c08615be3565b500490565b60008219821115615c2057615c206159d1565b500190565b8381526001600160a01b0383166020820152606060408201526000615c4d606083018461528a565b95945050505050565b60006001600160401b0380841680615c7057615c70615be3565b92169190910492915050565b60008251615c8e81846020870161525e565b9190910192915050565b600082615ca757615ca7615be3565b500690565b61012081016040808784376000838201818152879190815b6002811015615ce457848483379084018281529284019290600101615cc4565b5050828760c0870137610100850181815286935091505b6001811015615d1a578251825260209283019290910190600101615cfb565b50505095945050505050565b600060208284031215615d3857600080fd5b81516150d6816157fa565b600181815b80851115615d7e578160001904821115615d6457615d646159d1565b80851615615d7157918102915b93841c9390800290615d48565b509250929050565b600082615d9557506001615596565b81615da257506000615596565b8160018114615db85760028114615dc257615dde565b6001915050615596565b60ff841115615dd357615dd36159d1565b50506001821b615596565b5060208310610133831016604e8410600b8410161715615e01575081810a615596565b615e0b8383615d43565b8060001904821115615e1f57615e1f6159d1565b029392505050565b60006150d660ff841683615d86565b60006150d68383615d8656fea26469706673582212200dcdd6e2039faa0c7979293eff6e1f1020ae168d989673e3ec2a0911663b442664736f6c634300080f0033", -} - -// ProofofefficiencyABI is the input ABI used to generate the binding from. -// Deprecated: Use ProofofefficiencyMetaData.ABI instead. -var ProofofefficiencyABI = ProofofefficiencyMetaData.ABI - -// ProofofefficiencyBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ProofofefficiencyMetaData.Bin instead. -var ProofofefficiencyBin = ProofofefficiencyMetaData.Bin - -// DeployProofofefficiency deploys a new Ethereum contract, binding an instance of Proofofefficiency to it. -func DeployProofofefficiency(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Proofofefficiency, error) { - parsed, err := ProofofefficiencyMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProofofefficiencyBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Proofofefficiency{ProofofefficiencyCaller: ProofofefficiencyCaller{contract: contract}, ProofofefficiencyTransactor: ProofofefficiencyTransactor{contract: contract}, ProofofefficiencyFilterer: ProofofefficiencyFilterer{contract: contract}}, nil -} - -// Proofofefficiency is an auto generated Go binding around an Ethereum contract. -type Proofofefficiency struct { - ProofofefficiencyCaller // Read-only binding to the contract - ProofofefficiencyTransactor // Write-only binding to the contract - ProofofefficiencyFilterer // Log filterer for contract events -} - -// ProofofefficiencyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ProofofefficiencyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProofofefficiencyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ProofofefficiencyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProofofefficiencyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ProofofefficiencyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ProofofefficiencySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ProofofefficiencySession struct { - Contract *Proofofefficiency // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProofofefficiencyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ProofofefficiencyCallerSession struct { - Contract *ProofofefficiencyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ProofofefficiencyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ProofofefficiencyTransactorSession struct { - Contract *ProofofefficiencyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ProofofefficiencyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ProofofefficiencyRaw struct { - Contract *Proofofefficiency // Generic contract binding to access the raw methods on -} - -// ProofofefficiencyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ProofofefficiencyCallerRaw struct { - Contract *ProofofefficiencyCaller // Generic read-only contract binding to access the raw methods on -} - -// ProofofefficiencyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ProofofefficiencyTransactorRaw struct { - Contract *ProofofefficiencyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewProofofefficiency creates a new instance of Proofofefficiency, bound to a specific deployed contract. -func NewProofofefficiency(address common.Address, backend bind.ContractBackend) (*Proofofefficiency, error) { - contract, err := bindProofofefficiency(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Proofofefficiency{ProofofefficiencyCaller: ProofofefficiencyCaller{contract: contract}, ProofofefficiencyTransactor: ProofofefficiencyTransactor{contract: contract}, ProofofefficiencyFilterer: ProofofefficiencyFilterer{contract: contract}}, nil -} - -// NewProofofefficiencyCaller creates a new read-only instance of Proofofefficiency, bound to a specific deployed contract. -func NewProofofefficiencyCaller(address common.Address, caller bind.ContractCaller) (*ProofofefficiencyCaller, error) { - contract, err := bindProofofefficiency(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ProofofefficiencyCaller{contract: contract}, nil -} - -// NewProofofefficiencyTransactor creates a new write-only instance of Proofofefficiency, bound to a specific deployed contract. -func NewProofofefficiencyTransactor(address common.Address, transactor bind.ContractTransactor) (*ProofofefficiencyTransactor, error) { - contract, err := bindProofofefficiency(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ProofofefficiencyTransactor{contract: contract}, nil -} - -// NewProofofefficiencyFilterer creates a new log filterer instance of Proofofefficiency, bound to a specific deployed contract. -func NewProofofefficiencyFilterer(address common.Address, filterer bind.ContractFilterer) (*ProofofefficiencyFilterer, error) { - contract, err := bindProofofefficiency(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ProofofefficiencyFilterer{contract: contract}, nil -} - -// bindProofofefficiency binds a generic wrapper to an already deployed contract. -func bindProofofefficiency(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(ProofofefficiencyABI)) - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Proofofefficiency *ProofofefficiencyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Proofofefficiency.Contract.ProofofefficiencyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Proofofefficiency *ProofofefficiencyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ProofofefficiencyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Proofofefficiency *ProofofefficiencyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ProofofefficiencyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Proofofefficiency *ProofofefficiencyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Proofofefficiency.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Proofofefficiency *ProofofefficiencyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proofofefficiency.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Proofofefficiency *ProofofefficiencyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Proofofefficiency.Contract.contract.Transact(opts, method, params...) -} - -// FORCEBATCHTIMEOUT is a free data retrieval call binding the contract method 0xab9fc5ef. -// -// Solidity: function FORCE_BATCH_TIMEOUT() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) FORCEBATCHTIMEOUT(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "FORCE_BATCH_TIMEOUT") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// FORCEBATCHTIMEOUT is a free data retrieval call binding the contract method 0xab9fc5ef. -// -// Solidity: function FORCE_BATCH_TIMEOUT() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) FORCEBATCHTIMEOUT() (uint64, error) { - return _Proofofefficiency.Contract.FORCEBATCHTIMEOUT(&_Proofofefficiency.CallOpts) -} - -// FORCEBATCHTIMEOUT is a free data retrieval call binding the contract method 0xab9fc5ef. -// -// Solidity: function FORCE_BATCH_TIMEOUT() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) FORCEBATCHTIMEOUT() (uint64, error) { - return _Proofofefficiency.Contract.FORCEBATCHTIMEOUT(&_Proofofefficiency.CallOpts) -} - -// HALTAGGREGATIONTIMEOUT is a free data retrieval call binding the contract method 0x8b48931e. -// -// Solidity: function HALT_AGGREGATION_TIMEOUT() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) HALTAGGREGATIONTIMEOUT(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "HALT_AGGREGATION_TIMEOUT") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// HALTAGGREGATIONTIMEOUT is a free data retrieval call binding the contract method 0x8b48931e. -// -// Solidity: function HALT_AGGREGATION_TIMEOUT() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) HALTAGGREGATIONTIMEOUT() (uint64, error) { - return _Proofofefficiency.Contract.HALTAGGREGATIONTIMEOUT(&_Proofofefficiency.CallOpts) -} - -// HALTAGGREGATIONTIMEOUT is a free data retrieval call binding the contract method 0x8b48931e. -// -// Solidity: function HALT_AGGREGATION_TIMEOUT() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) HALTAGGREGATIONTIMEOUT() (uint64, error) { - return _Proofofefficiency.Contract.HALTAGGREGATIONTIMEOUT(&_Proofofefficiency.CallOpts) -} - -// MAXTRANSACTIONSBYTELENGTH is a free data retrieval call binding the contract method 0x2d0889d3. -// -// Solidity: function MAX_TRANSACTIONS_BYTE_LENGTH() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCaller) MAXTRANSACTIONSBYTELENGTH(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "MAX_TRANSACTIONS_BYTE_LENGTH") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MAXTRANSACTIONSBYTELENGTH is a free data retrieval call binding the contract method 0x2d0889d3. -// -// Solidity: function MAX_TRANSACTIONS_BYTE_LENGTH() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencySession) MAXTRANSACTIONSBYTELENGTH() (*big.Int, error) { - return _Proofofefficiency.Contract.MAXTRANSACTIONSBYTELENGTH(&_Proofofefficiency.CallOpts) -} - -// MAXTRANSACTIONSBYTELENGTH is a free data retrieval call binding the contract method 0x2d0889d3. -// -// Solidity: function MAX_TRANSACTIONS_BYTE_LENGTH() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCallerSession) MAXTRANSACTIONSBYTELENGTH() (*big.Int, error) { - return _Proofofefficiency.Contract.MAXTRANSACTIONSBYTELENGTH(&_Proofofefficiency.CallOpts) -} - -// MAXVERIFYBATCHES is a free data retrieval call binding the contract method 0xe217cfd6. -// -// Solidity: function MAX_VERIFY_BATCHES() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) MAXVERIFYBATCHES(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "MAX_VERIFY_BATCHES") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXVERIFYBATCHES is a free data retrieval call binding the contract method 0xe217cfd6. -// -// Solidity: function MAX_VERIFY_BATCHES() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) MAXVERIFYBATCHES() (uint64, error) { - return _Proofofefficiency.Contract.MAXVERIFYBATCHES(&_Proofofefficiency.CallOpts) -} - -// MAXVERIFYBATCHES is a free data retrieval call binding the contract method 0xe217cfd6. -// -// Solidity: function MAX_VERIFY_BATCHES() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) MAXVERIFYBATCHES() (uint64, error) { - return _Proofofefficiency.Contract.MAXVERIFYBATCHES(&_Proofofefficiency.CallOpts) -} - -// MULTIPLIERBATCHFEE is a free data retrieval call binding the contract method 0xf1d7b21c. -// -// Solidity: function MULTIPLIER_BATCH_FEE() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCaller) MULTIPLIERBATCHFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "MULTIPLIER_BATCH_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MULTIPLIERBATCHFEE is a free data retrieval call binding the contract method 0xf1d7b21c. -// -// Solidity: function MULTIPLIER_BATCH_FEE() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencySession) MULTIPLIERBATCHFEE() (*big.Int, error) { - return _Proofofefficiency.Contract.MULTIPLIERBATCHFEE(&_Proofofefficiency.CallOpts) -} - -// MULTIPLIERBATCHFEE is a free data retrieval call binding the contract method 0xf1d7b21c. -// -// Solidity: function MULTIPLIER_BATCH_FEE() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCallerSession) MULTIPLIERBATCHFEE() (*big.Int, error) { - return _Proofofefficiency.Contract.MULTIPLIERBATCHFEE(&_Proofofefficiency.CallOpts) -} - -// VERIFYBATCHTIMETARGET is a free data retrieval call binding the contract method 0x137f1edf. -// -// Solidity: function VERIFY_BATCH_TIME_TARGET() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) VERIFYBATCHTIMETARGET(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "VERIFY_BATCH_TIME_TARGET") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// VERIFYBATCHTIMETARGET is a free data retrieval call binding the contract method 0x137f1edf. -// -// Solidity: function VERIFY_BATCH_TIME_TARGET() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) VERIFYBATCHTIMETARGET() (uint64, error) { - return _Proofofefficiency.Contract.VERIFYBATCHTIMETARGET(&_Proofofefficiency.CallOpts) -} - -// VERIFYBATCHTIMETARGET is a free data retrieval call binding the contract method 0x137f1edf. -// -// Solidity: function VERIFY_BATCH_TIME_TARGET() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) VERIFYBATCHTIMETARGET() (uint64, error) { - return _Proofofefficiency.Contract.VERIFYBATCHTIMETARGET(&_Proofofefficiency.CallOpts) -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) Admin(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "admin") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) Admin() (common.Address, error) { - return _Proofofefficiency.Contract.Admin(&_Proofofefficiency.CallOpts) -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) Admin() (common.Address, error) { - return _Proofofefficiency.Contract.Admin(&_Proofofefficiency.CallOpts) -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCaller) BatchFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "batchFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencySession) BatchFee() (*big.Int, error) { - return _Proofofefficiency.Contract.BatchFee(&_Proofofefficiency.CallOpts) -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCallerSession) BatchFee() (*big.Int, error) { - return _Proofofefficiency.Contract.BatchFee(&_Proofofefficiency.CallOpts) -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_Proofofefficiency *ProofofefficiencyCaller) BatchNumToStateRoot(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "batchNumToStateRoot", arg0) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_Proofofefficiency *ProofofefficiencySession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { - return _Proofofefficiency.Contract.BatchNumToStateRoot(&_Proofofefficiency.CallOpts, arg0) -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_Proofofefficiency *ProofofefficiencyCallerSession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { - return _Proofofefficiency.Contract.BatchNumToStateRoot(&_Proofofefficiency.CallOpts, arg0) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "bridgeAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) BridgeAddress() (common.Address, error) { - return _Proofofefficiency.Contract.BridgeAddress(&_Proofofefficiency.CallOpts) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) BridgeAddress() (common.Address, error) { - return _Proofofefficiency.Contract.BridgeAddress(&_Proofofefficiency.CallOpts) -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCaller) CalculateRewardPerBatch(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "calculateRewardPerBatch") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencySession) CalculateRewardPerBatch() (*big.Int, error) { - return _Proofofefficiency.Contract.CalculateRewardPerBatch(&_Proofofefficiency.CallOpts) -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCallerSession) CalculateRewardPerBatch() (*big.Int, error) { - return _Proofofefficiency.Contract.CalculateRewardPerBatch(&_Proofofefficiency.CallOpts) -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) ChainID(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "chainID") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) ChainID() (uint64, error) { - return _Proofofefficiency.Contract.ChainID(&_Proofofefficiency.CallOpts) -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) ChainID() (uint64, error) { - return _Proofofefficiency.Contract.ChainID(&_Proofofefficiency.CallOpts) -} - -// ForceBatchAllowed is a free data retrieval call binding the contract method 0xd8f54db0. -// -// Solidity: function forceBatchAllowed() view returns(bool) -func (_Proofofefficiency *ProofofefficiencyCaller) ForceBatchAllowed(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "forceBatchAllowed") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// ForceBatchAllowed is a free data retrieval call binding the contract method 0xd8f54db0. -// -// Solidity: function forceBatchAllowed() view returns(bool) -func (_Proofofefficiency *ProofofefficiencySession) ForceBatchAllowed() (bool, error) { - return _Proofofefficiency.Contract.ForceBatchAllowed(&_Proofofefficiency.CallOpts) -} - -// ForceBatchAllowed is a free data retrieval call binding the contract method 0xd8f54db0. -// -// Solidity: function forceBatchAllowed() view returns(bool) -func (_Proofofefficiency *ProofofefficiencyCallerSession) ForceBatchAllowed() (bool, error) { - return _Proofofefficiency.Contract.ForceBatchAllowed(&_Proofofefficiency.CallOpts) -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_Proofofefficiency *ProofofefficiencyCaller) ForcedBatches(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "forcedBatches", arg0) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_Proofofefficiency *ProofofefficiencySession) ForcedBatches(arg0 uint64) ([32]byte, error) { - return _Proofofefficiency.Contract.ForcedBatches(&_Proofofefficiency.CallOpts, arg0) -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_Proofofefficiency *ProofofefficiencyCallerSession) ForcedBatches(arg0 uint64) ([32]byte, error) { - return _Proofofefficiency.Contract.ForcedBatches(&_Proofofefficiency.CallOpts, arg0) -} - -// GetCurrentBatchFee is a free data retrieval call binding the contract method 0x9f0d039d. -// -// Solidity: function getCurrentBatchFee() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCaller) GetCurrentBatchFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "getCurrentBatchFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetCurrentBatchFee is a free data retrieval call binding the contract method 0x9f0d039d. -// -// Solidity: function getCurrentBatchFee() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencySession) GetCurrentBatchFee() (*big.Int, error) { - return _Proofofefficiency.Contract.GetCurrentBatchFee(&_Proofofefficiency.CallOpts) -} - -// GetCurrentBatchFee is a free data retrieval call binding the contract method 0x9f0d039d. -// -// Solidity: function getCurrentBatchFee() view returns(uint256) -func (_Proofofefficiency *ProofofefficiencyCallerSession) GetCurrentBatchFee() (*big.Int, error) { - return _Proofofefficiency.Contract.GetCurrentBatchFee(&_Proofofefficiency.CallOpts) -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_Proofofefficiency *ProofofefficiencyCaller) GetInputSnarkBytes(opts *bind.CallOpts, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "getInputSnarkBytes", initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_Proofofefficiency *ProofofefficiencySession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - return _Proofofefficiency.Contract.GetInputSnarkBytes(&_Proofofefficiency.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_Proofofefficiency *ProofofefficiencyCallerSession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - return _Proofofefficiency.Contract.GetInputSnarkBytes(&_Proofofefficiency.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) GetLastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "getLastVerifiedBatch") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) GetLastVerifiedBatch() (uint64, error) { - return _Proofofefficiency.Contract.GetLastVerifiedBatch(&_Proofofefficiency.CallOpts) -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) GetLastVerifiedBatch() (uint64, error) { - return _Proofofefficiency.Contract.GetLastVerifiedBatch(&_Proofofefficiency.CallOpts) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "globalExitRootManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) GlobalExitRootManager() (common.Address, error) { - return _Proofofefficiency.Contract.GlobalExitRootManager(&_Proofofefficiency.CallOpts) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) GlobalExitRootManager() (common.Address, error) { - return _Proofofefficiency.Contract.GlobalExitRootManager(&_Proofofefficiency.CallOpts) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Proofofefficiency *ProofofefficiencyCaller) IsEmergencyState(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "isEmergencyState") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Proofofefficiency *ProofofefficiencySession) IsEmergencyState() (bool, error) { - return _Proofofefficiency.Contract.IsEmergencyState(&_Proofofefficiency.CallOpts) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Proofofefficiency *ProofofefficiencyCallerSession) IsEmergencyState() (bool, error) { - return _Proofofefficiency.Contract.IsEmergencyState(&_Proofofefficiency.CallOpts) -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_Proofofefficiency *ProofofefficiencyCaller) IsPendingStateConsolidable(opts *bind.CallOpts, pendingStateNum uint64) (bool, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "isPendingStateConsolidable", pendingStateNum) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_Proofofefficiency *ProofofefficiencySession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { - return _Proofofefficiency.Contract.IsPendingStateConsolidable(&_Proofofefficiency.CallOpts, pendingStateNum) -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_Proofofefficiency *ProofofefficiencyCallerSession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { - return _Proofofefficiency.Contract.IsPendingStateConsolidable(&_Proofofefficiency.CallOpts, pendingStateNum) -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) LastBatchSequenced(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "lastBatchSequenced") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) LastBatchSequenced() (uint64, error) { - return _Proofofefficiency.Contract.LastBatchSequenced(&_Proofofefficiency.CallOpts) -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) LastBatchSequenced() (uint64, error) { - return _Proofofefficiency.Contract.LastBatchSequenced(&_Proofofefficiency.CallOpts) -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) LastForceBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "lastForceBatch") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) LastForceBatch() (uint64, error) { - return _Proofofefficiency.Contract.LastForceBatch(&_Proofofefficiency.CallOpts) -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) LastForceBatch() (uint64, error) { - return _Proofofefficiency.Contract.LastForceBatch(&_Proofofefficiency.CallOpts) -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) LastForceBatchSequenced(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "lastForceBatchSequenced") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) LastForceBatchSequenced() (uint64, error) { - return _Proofofefficiency.Contract.LastForceBatchSequenced(&_Proofofefficiency.CallOpts) -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) LastForceBatchSequenced() (uint64, error) { - return _Proofofefficiency.Contract.LastForceBatchSequenced(&_Proofofefficiency.CallOpts) -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) LastPendingState(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "lastPendingState") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) LastPendingState() (uint64, error) { - return _Proofofefficiency.Contract.LastPendingState(&_Proofofefficiency.CallOpts) -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) LastPendingState() (uint64, error) { - return _Proofofefficiency.Contract.LastPendingState(&_Proofofefficiency.CallOpts) -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) LastPendingStateConsolidated(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "lastPendingStateConsolidated") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) LastPendingStateConsolidated() (uint64, error) { - return _Proofofefficiency.Contract.LastPendingStateConsolidated(&_Proofofefficiency.CallOpts) -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) LastPendingStateConsolidated() (uint64, error) { - return _Proofofefficiency.Contract.LastPendingStateConsolidated(&_Proofofefficiency.CallOpts) -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) LastTimestamp(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "lastTimestamp") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) LastTimestamp() (uint64, error) { - return _Proofofefficiency.Contract.LastTimestamp(&_Proofofefficiency.CallOpts) -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) LastTimestamp() (uint64, error) { - return _Proofofefficiency.Contract.LastTimestamp(&_Proofofefficiency.CallOpts) -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) LastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "lastVerifiedBatch") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) LastVerifiedBatch() (uint64, error) { - return _Proofofefficiency.Contract.LastVerifiedBatch(&_Proofofefficiency.CallOpts) -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) LastVerifiedBatch() (uint64, error) { - return _Proofofefficiency.Contract.LastVerifiedBatch(&_Proofofefficiency.CallOpts) -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) Matic(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "matic") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) Matic() (common.Address, error) { - return _Proofofefficiency.Contract.Matic(&_Proofofefficiency.CallOpts) -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) Matic() (common.Address, error) { - return _Proofofefficiency.Contract.Matic(&_Proofofefficiency.CallOpts) -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_Proofofefficiency *ProofofefficiencyCaller) NetworkName(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "networkName") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_Proofofefficiency *ProofofefficiencySession) NetworkName() (string, error) { - return _Proofofefficiency.Contract.NetworkName(&_Proofofefficiency.CallOpts) -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_Proofofefficiency *ProofofefficiencyCallerSession) NetworkName() (string, error) { - return _Proofofefficiency.Contract.NetworkName(&_Proofofefficiency.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) Owner() (common.Address, error) { - return _Proofofefficiency.Contract.Owner(&_Proofofefficiency.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) Owner() (common.Address, error) { - return _Proofofefficiency.Contract.Owner(&_Proofofefficiency.CallOpts) -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) PendingStateTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "pendingStateTimeout") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) PendingStateTimeout() (uint64, error) { - return _Proofofefficiency.Contract.PendingStateTimeout(&_Proofofefficiency.CallOpts) -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) PendingStateTimeout() (uint64, error) { - return _Proofofefficiency.Contract.PendingStateTimeout(&_Proofofefficiency.CallOpts) -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_Proofofefficiency *ProofofefficiencyCaller) PendingStateTransitions(opts *bind.CallOpts, arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "pendingStateTransitions", arg0) - - outstruct := new(struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte - }) - if err != nil { - return *outstruct, err - } - - outstruct.Timestamp = *abi.ConvertType(out[0], new(uint64)).(*uint64) - outstruct.LastVerifiedBatch = *abi.ConvertType(out[1], new(uint64)).(*uint64) - outstruct.ExitRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) - outstruct.StateRoot = *abi.ConvertType(out[3], new([32]byte)).(*[32]byte) - - return *outstruct, err - -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_Proofofefficiency *ProofofefficiencySession) PendingStateTransitions(arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error) { - return _Proofofefficiency.Contract.PendingStateTransitions(&_Proofofefficiency.CallOpts, arg0) -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_Proofofefficiency *ProofofefficiencyCallerSession) PendingStateTransitions(arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error) { - return _Proofofefficiency.Contract.PendingStateTransitions(&_Proofofefficiency.CallOpts, arg0) -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) RollupVerifier(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "rollupVerifier") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) RollupVerifier() (common.Address, error) { - return _Proofofefficiency.Contract.RollupVerifier(&_Proofofefficiency.CallOpts) -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) RollupVerifier() (common.Address, error) { - return _Proofofefficiency.Contract.RollupVerifier(&_Proofofefficiency.CallOpts) -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_Proofofefficiency *ProofofefficiencyCaller) SequencedBatches(opts *bind.CallOpts, arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "sequencedBatches", arg0) - - outstruct := new(struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 - }) - if err != nil { - return *outstruct, err - } - - outstruct.AccInputHash = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - outstruct.SequencedTimestamp = *abi.ConvertType(out[1], new(uint64)).(*uint64) - outstruct.PreviousLastBatchSequenced = *abi.ConvertType(out[2], new(uint64)).(*uint64) - - return *outstruct, err - -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_Proofofefficiency *ProofofefficiencySession) SequencedBatches(arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error) { - return _Proofofefficiency.Contract.SequencedBatches(&_Proofofefficiency.CallOpts, arg0) -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_Proofofefficiency *ProofofefficiencyCallerSession) SequencedBatches(arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error) { - return _Proofofefficiency.Contract.SequencedBatches(&_Proofofefficiency.CallOpts, arg0) -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) TrustedAggregator(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "trustedAggregator") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) TrustedAggregator() (common.Address, error) { - return _Proofofefficiency.Contract.TrustedAggregator(&_Proofofefficiency.CallOpts) -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) TrustedAggregator() (common.Address, error) { - return _Proofofefficiency.Contract.TrustedAggregator(&_Proofofefficiency.CallOpts) -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCaller) TrustedAggregatorTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "trustedAggregatorTimeout") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencySession) TrustedAggregatorTimeout() (uint64, error) { - return _Proofofefficiency.Contract.TrustedAggregatorTimeout(&_Proofofefficiency.CallOpts) -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_Proofofefficiency *ProofofefficiencyCallerSession) TrustedAggregatorTimeout() (uint64, error) { - return _Proofofefficiency.Contract.TrustedAggregatorTimeout(&_Proofofefficiency.CallOpts) -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCaller) TrustedSequencer(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "trustedSequencer") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_Proofofefficiency *ProofofefficiencySession) TrustedSequencer() (common.Address, error) { - return _Proofofefficiency.Contract.TrustedSequencer(&_Proofofefficiency.CallOpts) -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_Proofofefficiency *ProofofefficiencyCallerSession) TrustedSequencer() (common.Address, error) { - return _Proofofefficiency.Contract.TrustedSequencer(&_Proofofefficiency.CallOpts) -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_Proofofefficiency *ProofofefficiencyCaller) TrustedSequencerURL(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _Proofofefficiency.contract.Call(opts, &out, "trustedSequencerURL") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_Proofofefficiency *ProofofefficiencySession) TrustedSequencerURL() (string, error) { - return _Proofofefficiency.Contract.TrustedSequencerURL(&_Proofofefficiency.CallOpts) -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_Proofofefficiency *ProofofefficiencyCallerSession) TrustedSequencerURL() (string, error) { - return _Proofofefficiency.Contract.TrustedSequencerURL(&_Proofofefficiency.CallOpts) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) ActivateEmergencyState(opts *bind.TransactOpts, sequencedBatchNum uint64) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "activateEmergencyState", sequencedBatchNum) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_Proofofefficiency *ProofofefficiencySession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ActivateEmergencyState(&_Proofofefficiency.TransactOpts, sequencedBatchNum) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ActivateEmergencyState(&_Proofofefficiency.TransactOpts, sequencedBatchNum) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) ConsolidatePendingState(opts *bind.TransactOpts, pendingStateNum uint64) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "consolidatePendingState", pendingStateNum) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_Proofofefficiency *ProofofefficiencySession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ConsolidatePendingState(&_Proofofefficiency.TransactOpts, pendingStateNum) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ConsolidatePendingState(&_Proofofefficiency.TransactOpts, pendingStateNum) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) DeactivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "deactivateEmergencyState") -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Proofofefficiency *ProofofefficiencySession) DeactivateEmergencyState() (*types.Transaction, error) { - return _Proofofefficiency.Contract.DeactivateEmergencyState(&_Proofofefficiency.TransactOpts) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) DeactivateEmergencyState() (*types.Transaction, error) { - return _Proofofefficiency.Contract.DeactivateEmergencyState(&_Proofofefficiency.TransactOpts) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) ForceBatch(opts *bind.TransactOpts, transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "forceBatch", transactions, maticAmount) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_Proofofefficiency *ProofofefficiencySession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ForceBatch(&_Proofofefficiency.TransactOpts, transactions, maticAmount) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ForceBatch(&_Proofofefficiency.TransactOpts, transactions, maticAmount) -} - -// Initialize is a paid mutator transaction binding the contract method 0x60943d6a. -// -// Solidity: function initialize(address _globalExitRootManager, address _matic, address _rollupVerifier, address _bridgeAddress, (address,uint64,address,uint64,bool,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) Initialize(opts *bind.TransactOpts, _globalExitRootManager common.Address, _matic common.Address, _rollupVerifier common.Address, _bridgeAddress common.Address, initializePackedParameters ProofOfEfficiencyInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "initialize", _globalExitRootManager, _matic, _rollupVerifier, _bridgeAddress, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName) -} - -// Initialize is a paid mutator transaction binding the contract method 0x60943d6a. -// -// Solidity: function initialize(address _globalExitRootManager, address _matic, address _rollupVerifier, address _bridgeAddress, (address,uint64,address,uint64,bool,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName) returns() -func (_Proofofefficiency *ProofofefficiencySession) Initialize(_globalExitRootManager common.Address, _matic common.Address, _rollupVerifier common.Address, _bridgeAddress common.Address, initializePackedParameters ProofOfEfficiencyInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string) (*types.Transaction, error) { - return _Proofofefficiency.Contract.Initialize(&_Proofofefficiency.TransactOpts, _globalExitRootManager, _matic, _rollupVerifier, _bridgeAddress, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName) -} - -// Initialize is a paid mutator transaction binding the contract method 0x60943d6a. -// -// Solidity: function initialize(address _globalExitRootManager, address _matic, address _rollupVerifier, address _bridgeAddress, (address,uint64,address,uint64,bool,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) Initialize(_globalExitRootManager common.Address, _matic common.Address, _rollupVerifier common.Address, _bridgeAddress common.Address, initializePackedParameters ProofOfEfficiencyInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string) (*types.Transaction, error) { - return _Proofofefficiency.Contract.Initialize(&_Proofofefficiency.TransactOpts, _globalExitRootManager, _matic, _rollupVerifier, _bridgeAddress, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0xe11f3f18. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) OverridePendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "overridePendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0xe11f3f18. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencySession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.OverridePendingState(&_Proofofefficiency.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0xe11f3f18. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.OverridePendingState(&_Proofofefficiency.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x75c508b3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) ProveNonDeterministicPendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "proveNonDeterministicPendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x75c508b3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencySession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ProveNonDeterministicPendingState(&_Proofofefficiency.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x75c508b3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.ProveNonDeterministicPendingState(&_Proofofefficiency.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Proofofefficiency *ProofofefficiencySession) RenounceOwnership() (*types.Transaction, error) { - return _Proofofefficiency.Contract.RenounceOwnership(&_Proofofefficiency.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Proofofefficiency.Contract.RenounceOwnership(&_Proofofefficiency.TransactOpts) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x3c158267. -// -// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SequenceBatches(opts *bind.TransactOpts, batches []ProofOfEfficiencyBatchData) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "sequenceBatches", batches) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x3c158267. -// -// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches) returns() -func (_Proofofefficiency *ProofofefficiencySession) SequenceBatches(batches []ProofOfEfficiencyBatchData) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SequenceBatches(&_Proofofefficiency.TransactOpts, batches) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x3c158267. -// -// Solidity: function sequenceBatches((bytes,bytes32,uint64,uint64)[] batches) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SequenceBatches(batches []ProofOfEfficiencyBatchData) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SequenceBatches(&_Proofofefficiency.TransactOpts, batches) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SequenceForceBatches(opts *bind.TransactOpts, batches []ProofOfEfficiencyForcedBatchData) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "sequenceForceBatches", batches) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_Proofofefficiency *ProofofefficiencySession) SequenceForceBatches(batches []ProofOfEfficiencyForcedBatchData) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SequenceForceBatches(&_Proofofefficiency.TransactOpts, batches) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SequenceForceBatches(batches []ProofOfEfficiencyForcedBatchData) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SequenceForceBatches(&_Proofofefficiency.TransactOpts, batches) -} - -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address newAdmin) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SetAdmin(opts *bind.TransactOpts, newAdmin common.Address) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "setAdmin", newAdmin) -} - -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address newAdmin) returns() -func (_Proofofefficiency *ProofofefficiencySession) SetAdmin(newAdmin common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetAdmin(&_Proofofefficiency.TransactOpts, newAdmin) -} - -// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. -// -// Solidity: function setAdmin(address newAdmin) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SetAdmin(newAdmin common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetAdmin(&_Proofofefficiency.TransactOpts, newAdmin) -} - -// SetForceBatchAllowed is a paid mutator transaction binding the contract method 0x8c4a0af7. -// -// Solidity: function setForceBatchAllowed(bool newForceBatchAllowed) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SetForceBatchAllowed(opts *bind.TransactOpts, newForceBatchAllowed bool) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "setForceBatchAllowed", newForceBatchAllowed) -} - -// SetForceBatchAllowed is a paid mutator transaction binding the contract method 0x8c4a0af7. -// -// Solidity: function setForceBatchAllowed(bool newForceBatchAllowed) returns() -func (_Proofofefficiency *ProofofefficiencySession) SetForceBatchAllowed(newForceBatchAllowed bool) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetForceBatchAllowed(&_Proofofefficiency.TransactOpts, newForceBatchAllowed) -} - -// SetForceBatchAllowed is a paid mutator transaction binding the contract method 0x8c4a0af7. -// -// Solidity: function setForceBatchAllowed(bool newForceBatchAllowed) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SetForceBatchAllowed(newForceBatchAllowed bool) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetForceBatchAllowed(&_Proofofefficiency.TransactOpts, newForceBatchAllowed) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SetPendingStateTimeout(opts *bind.TransactOpts, newPendingStateTimeout uint64) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "setPendingStateTimeout", newPendingStateTimeout) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_Proofofefficiency *ProofofefficiencySession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetPendingStateTimeout(&_Proofofefficiency.TransactOpts, newPendingStateTimeout) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetPendingStateTimeout(&_Proofofefficiency.TransactOpts, newPendingStateTimeout) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SetTrustedAggregator(opts *bind.TransactOpts, newTrustedAggregator common.Address) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "setTrustedAggregator", newTrustedAggregator) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_Proofofefficiency *ProofofefficiencySession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedAggregator(&_Proofofefficiency.TransactOpts, newTrustedAggregator) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedAggregator(&_Proofofefficiency.TransactOpts, newTrustedAggregator) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SetTrustedAggregatorTimeout(opts *bind.TransactOpts, newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "setTrustedAggregatorTimeout", newTrustedAggregatorTimeout) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_Proofofefficiency *ProofofefficiencySession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedAggregatorTimeout(&_Proofofefficiency.TransactOpts, newTrustedAggregatorTimeout) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedAggregatorTimeout(&_Proofofefficiency.TransactOpts, newTrustedAggregatorTimeout) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SetTrustedSequencer(opts *bind.TransactOpts, newTrustedSequencer common.Address) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "setTrustedSequencer", newTrustedSequencer) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_Proofofefficiency *ProofofefficiencySession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedSequencer(&_Proofofefficiency.TransactOpts, newTrustedSequencer) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedSequencer(&_Proofofefficiency.TransactOpts, newTrustedSequencer) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) SetTrustedSequencerURL(opts *bind.TransactOpts, newTrustedSequencerURL string) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "setTrustedSequencerURL", newTrustedSequencerURL) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_Proofofefficiency *ProofofefficiencySession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedSequencerURL(&_Proofofefficiency.TransactOpts, newTrustedSequencerURL) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { - return _Proofofefficiency.Contract.SetTrustedSequencerURL(&_Proofofefficiency.TransactOpts, newTrustedSequencerURL) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Proofofefficiency *ProofofefficiencySession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.TransferOwnership(&_Proofofefficiency.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Proofofefficiency.Contract.TransferOwnership(&_Proofofefficiency.TransactOpts, newOwner) -} - -// TrustedVerifyBatches is a paid mutator transaction binding the contract method 0xedc41121. -// -// Solidity: function trustedVerifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) TrustedVerifyBatches(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "trustedVerifyBatches", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// TrustedVerifyBatches is a paid mutator transaction binding the contract method 0xedc41121. -// -// Solidity: function trustedVerifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencySession) TrustedVerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.TrustedVerifyBatches(&_Proofofefficiency.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// TrustedVerifyBatches is a paid mutator transaction binding the contract method 0xedc41121. -// -// Solidity: function trustedVerifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) TrustedVerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.TrustedVerifyBatches(&_Proofofefficiency.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x4834a343. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactor) VerifyBatches(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.contract.Transact(opts, "verifyBatches", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x4834a343. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencySession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.VerifyBatches(&_Proofofefficiency.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x4834a343. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns() -func (_Proofofefficiency *ProofofefficiencyTransactorSession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) { - return _Proofofefficiency.Contract.VerifyBatches(&_Proofofefficiency.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proofA, proofB, proofC) -} - -// ProofofefficiencyConsolidatePendingStateIterator is returned from FilterConsolidatePendingState and is used to iterate over the raw logs and unpacked data for ConsolidatePendingState events raised by the Proofofefficiency contract. -type ProofofefficiencyConsolidatePendingStateIterator struct { - Event *ProofofefficiencyConsolidatePendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyConsolidatePendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyConsolidatePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyConsolidatePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyConsolidatePendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyConsolidatePendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyConsolidatePendingState represents a ConsolidatePendingState event raised by the Proofofefficiency contract. -type ProofofefficiencyConsolidatePendingState struct { - NumBatch uint64 - StateRoot [32]byte - PendingStateNum uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterConsolidatePendingState is a free log retrieval operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterConsolidatePendingState(opts *bind.FilterOpts, numBatch []uint64, pendingStateNum []uint64) (*ProofofefficiencyConsolidatePendingStateIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var pendingStateNumRule []interface{} - for _, pendingStateNumItem := range pendingStateNum { - pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) - if err != nil { - return nil, err - } - return &ProofofefficiencyConsolidatePendingStateIterator{contract: _Proofofefficiency.contract, event: "ConsolidatePendingState", logs: logs, sub: sub}, nil -} - -// WatchConsolidatePendingState is a free log subscription operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchConsolidatePendingState(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyConsolidatePendingState, numBatch []uint64, pendingStateNum []uint64) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var pendingStateNumRule []interface{} - for _, pendingStateNumItem := range pendingStateNum { - pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyConsolidatePendingState) - if err := _Proofofefficiency.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseConsolidatePendingState is a log parse operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseConsolidatePendingState(log types.Log) (*ProofofefficiencyConsolidatePendingState, error) { - event := new(ProofofefficiencyConsolidatePendingState) - if err := _Proofofefficiency.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyEmergencyStateActivatedIterator is returned from FilterEmergencyStateActivated and is used to iterate over the raw logs and unpacked data for EmergencyStateActivated events raised by the Proofofefficiency contract. -type ProofofefficiencyEmergencyStateActivatedIterator struct { - Event *ProofofefficiencyEmergencyStateActivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyEmergencyStateActivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyEmergencyStateActivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyEmergencyStateActivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyEmergencyStateActivated represents a EmergencyStateActivated event raised by the Proofofefficiency contract. -type ProofofefficiencyEmergencyStateActivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateActivated is a free log retrieval operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterEmergencyStateActivated(opts *bind.FilterOpts) (*ProofofefficiencyEmergencyStateActivatedIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return &ProofofefficiencyEmergencyStateActivatedIterator{contract: _Proofofefficiency.contract, event: "EmergencyStateActivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateActivated is a free log subscription operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchEmergencyStateActivated(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyEmergencyStateActivated) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyEmergencyStateActivated) - if err := _Proofofefficiency.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateActivated is a log parse operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseEmergencyStateActivated(log types.Log) (*ProofofefficiencyEmergencyStateActivated, error) { - event := new(ProofofefficiencyEmergencyStateActivated) - if err := _Proofofefficiency.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyEmergencyStateDeactivatedIterator is returned from FilterEmergencyStateDeactivated and is used to iterate over the raw logs and unpacked data for EmergencyStateDeactivated events raised by the Proofofefficiency contract. -type ProofofefficiencyEmergencyStateDeactivatedIterator struct { - Event *ProofofefficiencyEmergencyStateDeactivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyEmergencyStateDeactivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyEmergencyStateDeactivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyEmergencyStateDeactivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyEmergencyStateDeactivated represents a EmergencyStateDeactivated event raised by the Proofofefficiency contract. -type ProofofefficiencyEmergencyStateDeactivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateDeactivated is a free log retrieval operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterEmergencyStateDeactivated(opts *bind.FilterOpts) (*ProofofefficiencyEmergencyStateDeactivatedIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return &ProofofefficiencyEmergencyStateDeactivatedIterator{contract: _Proofofefficiency.contract, event: "EmergencyStateDeactivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateDeactivated is a free log subscription operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchEmergencyStateDeactivated(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyEmergencyStateDeactivated) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyEmergencyStateDeactivated) - if err := _Proofofefficiency.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateDeactivated is a log parse operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseEmergencyStateDeactivated(log types.Log) (*ProofofefficiencyEmergencyStateDeactivated, error) { - event := new(ProofofefficiencyEmergencyStateDeactivated) - if err := _Proofofefficiency.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyForceBatchIterator is returned from FilterForceBatch and is used to iterate over the raw logs and unpacked data for ForceBatch events raised by the Proofofefficiency contract. -type ProofofefficiencyForceBatchIterator struct { - Event *ProofofefficiencyForceBatch // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyForceBatchIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyForceBatch) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyForceBatch) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyForceBatchIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyForceBatchIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyForceBatch represents a ForceBatch event raised by the Proofofefficiency contract. -type ProofofefficiencyForceBatch struct { - ForceBatchNum uint64 - LastGlobalExitRoot [32]byte - Sequencer common.Address - Transactions []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterForceBatch is a free log retrieval operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterForceBatch(opts *bind.FilterOpts, forceBatchNum []uint64) (*ProofofefficiencyForceBatchIterator, error) { - - var forceBatchNumRule []interface{} - for _, forceBatchNumItem := range forceBatchNum { - forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "ForceBatch", forceBatchNumRule) - if err != nil { - return nil, err - } - return &ProofofefficiencyForceBatchIterator{contract: _Proofofefficiency.contract, event: "ForceBatch", logs: logs, sub: sub}, nil -} - -// WatchForceBatch is a free log subscription operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchForceBatch(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyForceBatch, forceBatchNum []uint64) (event.Subscription, error) { - - var forceBatchNumRule []interface{} - for _, forceBatchNumItem := range forceBatchNum { - forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "ForceBatch", forceBatchNumRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyForceBatch) - if err := _Proofofefficiency.contract.UnpackLog(event, "ForceBatch", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseForceBatch is a log parse operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseForceBatch(log types.Log) (*ProofofefficiencyForceBatch, error) { - event := new(ProofofefficiencyForceBatch) - if err := _Proofofefficiency.contract.UnpackLog(event, "ForceBatch", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Proofofefficiency contract. -type ProofofefficiencyInitializedIterator struct { - Event *ProofofefficiencyInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyInitialized represents a Initialized event raised by the Proofofefficiency contract. -type ProofofefficiencyInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterInitialized(opts *bind.FilterOpts) (*ProofofefficiencyInitializedIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ProofofefficiencyInitializedIterator{contract: _Proofofefficiency.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyInitialized) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyInitialized) - if err := _Proofofefficiency.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseInitialized(log types.Log) (*ProofofefficiencyInitialized, error) { - event := new(ProofofefficiencyInitialized) - if err := _Proofofefficiency.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyOverridePendingStateIterator is returned from FilterOverridePendingState and is used to iterate over the raw logs and unpacked data for OverridePendingState events raised by the Proofofefficiency contract. -type ProofofefficiencyOverridePendingStateIterator struct { - Event *ProofofefficiencyOverridePendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyOverridePendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyOverridePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyOverridePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyOverridePendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyOverridePendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyOverridePendingState represents a OverridePendingState event raised by the Proofofefficiency contract. -type ProofofefficiencyOverridePendingState struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOverridePendingState is a free log retrieval operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterOverridePendingState(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*ProofofefficiencyOverridePendingStateIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &ProofofefficiencyOverridePendingStateIterator{contract: _Proofofefficiency.contract, event: "OverridePendingState", logs: logs, sub: sub}, nil -} - -// WatchOverridePendingState is a free log subscription operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchOverridePendingState(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyOverridePendingState, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyOverridePendingState) - if err := _Proofofefficiency.contract.UnpackLog(event, "OverridePendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOverridePendingState is a log parse operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseOverridePendingState(log types.Log) (*ProofofefficiencyOverridePendingState, error) { - event := new(ProofofefficiencyOverridePendingState) - if err := _Proofofefficiency.contract.UnpackLog(event, "OverridePendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Proofofefficiency contract. -type ProofofefficiencyOwnershipTransferredIterator struct { - Event *ProofofefficiencyOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyOwnershipTransferred represents a OwnershipTransferred event raised by the Proofofefficiency contract. -type ProofofefficiencyOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProofofefficiencyOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ProofofefficiencyOwnershipTransferredIterator{contract: _Proofofefficiency.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyOwnershipTransferred) - if err := _Proofofefficiency.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseOwnershipTransferred(log types.Log) (*ProofofefficiencyOwnershipTransferred, error) { - event := new(ProofofefficiencyOwnershipTransferred) - if err := _Proofofefficiency.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyProveNonDeterministicPendingStateIterator is returned from FilterProveNonDeterministicPendingState and is used to iterate over the raw logs and unpacked data for ProveNonDeterministicPendingState events raised by the Proofofefficiency contract. -type ProofofefficiencyProveNonDeterministicPendingStateIterator struct { - Event *ProofofefficiencyProveNonDeterministicPendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyProveNonDeterministicPendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyProveNonDeterministicPendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyProveNonDeterministicPendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyProveNonDeterministicPendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyProveNonDeterministicPendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyProveNonDeterministicPendingState represents a ProveNonDeterministicPendingState event raised by the Proofofefficiency contract. -type ProofofefficiencyProveNonDeterministicPendingState struct { - StoredStateRoot [32]byte - ProvedStateRoot [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterProveNonDeterministicPendingState is a free log retrieval operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterProveNonDeterministicPendingState(opts *bind.FilterOpts) (*ProofofefficiencyProveNonDeterministicPendingStateIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "ProveNonDeterministicPendingState") - if err != nil { - return nil, err - } - return &ProofofefficiencyProveNonDeterministicPendingStateIterator{contract: _Proofofefficiency.contract, event: "ProveNonDeterministicPendingState", logs: logs, sub: sub}, nil -} - -// WatchProveNonDeterministicPendingState is a free log subscription operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchProveNonDeterministicPendingState(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyProveNonDeterministicPendingState) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "ProveNonDeterministicPendingState") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyProveNonDeterministicPendingState) - if err := _Proofofefficiency.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseProveNonDeterministicPendingState is a log parse operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseProveNonDeterministicPendingState(log types.Log) (*ProofofefficiencyProveNonDeterministicPendingState, error) { - event := new(ProofofefficiencyProveNonDeterministicPendingState) - if err := _Proofofefficiency.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySequenceBatchesIterator is returned from FilterSequenceBatches and is used to iterate over the raw logs and unpacked data for SequenceBatches events raised by the Proofofefficiency contract. -type ProofofefficiencySequenceBatchesIterator struct { - Event *ProofofefficiencySequenceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySequenceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySequenceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySequenceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySequenceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySequenceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySequenceBatches represents a SequenceBatches event raised by the Proofofefficiency contract. -type ProofofefficiencySequenceBatches struct { - NumBatch uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSequenceBatches is a free log retrieval operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*ProofofefficiencySequenceBatchesIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SequenceBatches", numBatchRule) - if err != nil { - return nil, err - } - return &ProofofefficiencySequenceBatchesIterator{contract: _Proofofefficiency.contract, event: "SequenceBatches", logs: logs, sub: sub}, nil -} - -// WatchSequenceBatches is a free log subscription operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSequenceBatches(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySequenceBatches, numBatch []uint64) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SequenceBatches", numBatchRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySequenceBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "SequenceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSequenceBatches is a log parse operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSequenceBatches(log types.Log) (*ProofofefficiencySequenceBatches, error) { - event := new(ProofofefficiencySequenceBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "SequenceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySequenceForceBatchesIterator is returned from FilterSequenceForceBatches and is used to iterate over the raw logs and unpacked data for SequenceForceBatches events raised by the Proofofefficiency contract. -type ProofofefficiencySequenceForceBatchesIterator struct { - Event *ProofofefficiencySequenceForceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySequenceForceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySequenceForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySequenceForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySequenceForceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySequenceForceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySequenceForceBatches represents a SequenceForceBatches event raised by the Proofofefficiency contract. -type ProofofefficiencySequenceForceBatches struct { - NumBatch uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSequenceForceBatches is a free log retrieval operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSequenceForceBatches(opts *bind.FilterOpts, numBatch []uint64) (*ProofofefficiencySequenceForceBatchesIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SequenceForceBatches", numBatchRule) - if err != nil { - return nil, err - } - return &ProofofefficiencySequenceForceBatchesIterator{contract: _Proofofefficiency.contract, event: "SequenceForceBatches", logs: logs, sub: sub}, nil -} - -// WatchSequenceForceBatches is a free log subscription operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSequenceForceBatches(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySequenceForceBatches, numBatch []uint64) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SequenceForceBatches", numBatchRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySequenceForceBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSequenceForceBatches is a log parse operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSequenceForceBatches(log types.Log) (*ProofofefficiencySequenceForceBatches, error) { - event := new(ProofofefficiencySequenceForceBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySetAdminIterator is returned from FilterSetAdmin and is used to iterate over the raw logs and unpacked data for SetAdmin events raised by the Proofofefficiency contract. -type ProofofefficiencySetAdminIterator struct { - Event *ProofofefficiencySetAdmin // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySetAdminIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetAdmin) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetAdmin) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySetAdminIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySetAdminIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySetAdmin represents a SetAdmin event raised by the Proofofefficiency contract. -type ProofofefficiencySetAdmin struct { - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetAdmin is a free log retrieval operation binding the contract event 0x5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1. -// -// Solidity: event SetAdmin(address newAdmin) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSetAdmin(opts *bind.FilterOpts) (*ProofofefficiencySetAdminIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SetAdmin") - if err != nil { - return nil, err - } - return &ProofofefficiencySetAdminIterator{contract: _Proofofefficiency.contract, event: "SetAdmin", logs: logs, sub: sub}, nil -} - -// WatchSetAdmin is a free log subscription operation binding the contract event 0x5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1. -// -// Solidity: event SetAdmin(address newAdmin) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSetAdmin(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySetAdmin) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SetAdmin") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySetAdmin) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetAdmin", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetAdmin is a log parse operation binding the contract event 0x5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a1. -// -// Solidity: event SetAdmin(address newAdmin) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSetAdmin(log types.Log) (*ProofofefficiencySetAdmin, error) { - event := new(ProofofefficiencySetAdmin) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetAdmin", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySetForceBatchAllowedIterator is returned from FilterSetForceBatchAllowed and is used to iterate over the raw logs and unpacked data for SetForceBatchAllowed events raised by the Proofofefficiency contract. -type ProofofefficiencySetForceBatchAllowedIterator struct { - Event *ProofofefficiencySetForceBatchAllowed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySetForceBatchAllowedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetForceBatchAllowed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetForceBatchAllowed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySetForceBatchAllowedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySetForceBatchAllowedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySetForceBatchAllowed represents a SetForceBatchAllowed event raised by the Proofofefficiency contract. -type ProofofefficiencySetForceBatchAllowed struct { - NewForceBatchAllowed bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetForceBatchAllowed is a free log retrieval operation binding the contract event 0xbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6. -// -// Solidity: event SetForceBatchAllowed(bool newForceBatchAllowed) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSetForceBatchAllowed(opts *bind.FilterOpts) (*ProofofefficiencySetForceBatchAllowedIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SetForceBatchAllowed") - if err != nil { - return nil, err - } - return &ProofofefficiencySetForceBatchAllowedIterator{contract: _Proofofefficiency.contract, event: "SetForceBatchAllowed", logs: logs, sub: sub}, nil -} - -// WatchSetForceBatchAllowed is a free log subscription operation binding the contract event 0xbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6. -// -// Solidity: event SetForceBatchAllowed(bool newForceBatchAllowed) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSetForceBatchAllowed(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySetForceBatchAllowed) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SetForceBatchAllowed") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySetForceBatchAllowed) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetForceBatchAllowed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetForceBatchAllowed is a log parse operation binding the contract event 0xbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6. -// -// Solidity: event SetForceBatchAllowed(bool newForceBatchAllowed) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSetForceBatchAllowed(log types.Log) (*ProofofefficiencySetForceBatchAllowed, error) { - event := new(ProofofefficiencySetForceBatchAllowed) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetForceBatchAllowed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySetPendingStateTimeoutIterator is returned from FilterSetPendingStateTimeout and is used to iterate over the raw logs and unpacked data for SetPendingStateTimeout events raised by the Proofofefficiency contract. -type ProofofefficiencySetPendingStateTimeoutIterator struct { - Event *ProofofefficiencySetPendingStateTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySetPendingStateTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetPendingStateTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetPendingStateTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySetPendingStateTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySetPendingStateTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySetPendingStateTimeout represents a SetPendingStateTimeout event raised by the Proofofefficiency contract. -type ProofofefficiencySetPendingStateTimeout struct { - NewPendingStateTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetPendingStateTimeout is a free log retrieval operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSetPendingStateTimeout(opts *bind.FilterOpts) (*ProofofefficiencySetPendingStateTimeoutIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SetPendingStateTimeout") - if err != nil { - return nil, err - } - return &ProofofefficiencySetPendingStateTimeoutIterator{contract: _Proofofefficiency.contract, event: "SetPendingStateTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetPendingStateTimeout is a free log subscription operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSetPendingStateTimeout(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySetPendingStateTimeout) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SetPendingStateTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySetPendingStateTimeout) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetPendingStateTimeout is a log parse operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSetPendingStateTimeout(log types.Log) (*ProofofefficiencySetPendingStateTimeout, error) { - event := new(ProofofefficiencySetPendingStateTimeout) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySetTrustedAggregatorIterator is returned from FilterSetTrustedAggregator and is used to iterate over the raw logs and unpacked data for SetTrustedAggregator events raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedAggregatorIterator struct { - Event *ProofofefficiencySetTrustedAggregator // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySetTrustedAggregatorIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySetTrustedAggregatorIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySetTrustedAggregatorIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySetTrustedAggregator represents a SetTrustedAggregator event raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedAggregator struct { - NewTrustedAggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedAggregator is a free log retrieval operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSetTrustedAggregator(opts *bind.FilterOpts) (*ProofofefficiencySetTrustedAggregatorIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SetTrustedAggregator") - if err != nil { - return nil, err - } - return &ProofofefficiencySetTrustedAggregatorIterator{contract: _Proofofefficiency.contract, event: "SetTrustedAggregator", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedAggregator is a free log subscription operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSetTrustedAggregator(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySetTrustedAggregator) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SetTrustedAggregator") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySetTrustedAggregator) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedAggregator is a log parse operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSetTrustedAggregator(log types.Log) (*ProofofefficiencySetTrustedAggregator, error) { - event := new(ProofofefficiencySetTrustedAggregator) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySetTrustedAggregatorTimeoutIterator is returned from FilterSetTrustedAggregatorTimeout and is used to iterate over the raw logs and unpacked data for SetTrustedAggregatorTimeout events raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedAggregatorTimeoutIterator struct { - Event *ProofofefficiencySetTrustedAggregatorTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySetTrustedAggregatorTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedAggregatorTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedAggregatorTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySetTrustedAggregatorTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySetTrustedAggregatorTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySetTrustedAggregatorTimeout represents a SetTrustedAggregatorTimeout event raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedAggregatorTimeout struct { - NewTrustedAggregatorTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedAggregatorTimeout is a free log retrieval operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSetTrustedAggregatorTimeout(opts *bind.FilterOpts) (*ProofofefficiencySetTrustedAggregatorTimeoutIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SetTrustedAggregatorTimeout") - if err != nil { - return nil, err - } - return &ProofofefficiencySetTrustedAggregatorTimeoutIterator{contract: _Proofofefficiency.contract, event: "SetTrustedAggregatorTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedAggregatorTimeout is a free log subscription operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSetTrustedAggregatorTimeout(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySetTrustedAggregatorTimeout) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SetTrustedAggregatorTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySetTrustedAggregatorTimeout) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedAggregatorTimeout is a log parse operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSetTrustedAggregatorTimeout(log types.Log) (*ProofofefficiencySetTrustedAggregatorTimeout, error) { - event := new(ProofofefficiencySetTrustedAggregatorTimeout) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySetTrustedSequencerIterator is returned from FilterSetTrustedSequencer and is used to iterate over the raw logs and unpacked data for SetTrustedSequencer events raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedSequencerIterator struct { - Event *ProofofefficiencySetTrustedSequencer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySetTrustedSequencerIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedSequencer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedSequencer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySetTrustedSequencerIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySetTrustedSequencerIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySetTrustedSequencer represents a SetTrustedSequencer event raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedSequencer struct { - NewTrustedSequencer common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedSequencer is a free log retrieval operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSetTrustedSequencer(opts *bind.FilterOpts) (*ProofofefficiencySetTrustedSequencerIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SetTrustedSequencer") - if err != nil { - return nil, err - } - return &ProofofefficiencySetTrustedSequencerIterator{contract: _Proofofefficiency.contract, event: "SetTrustedSequencer", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedSequencer is a free log subscription operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSetTrustedSequencer(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySetTrustedSequencer) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SetTrustedSequencer") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySetTrustedSequencer) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedSequencer is a log parse operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSetTrustedSequencer(log types.Log) (*ProofofefficiencySetTrustedSequencer, error) { - event := new(ProofofefficiencySetTrustedSequencer) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencySetTrustedSequencerURLIterator is returned from FilterSetTrustedSequencerURL and is used to iterate over the raw logs and unpacked data for SetTrustedSequencerURL events raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedSequencerURLIterator struct { - Event *ProofofefficiencySetTrustedSequencerURL // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencySetTrustedSequencerURLIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedSequencerURL) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencySetTrustedSequencerURL) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencySetTrustedSequencerURLIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencySetTrustedSequencerURLIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencySetTrustedSequencerURL represents a SetTrustedSequencerURL event raised by the Proofofefficiency contract. -type ProofofefficiencySetTrustedSequencerURL struct { - NewTrustedSequencerURL string - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedSequencerURL is a free log retrieval operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterSetTrustedSequencerURL(opts *bind.FilterOpts) (*ProofofefficiencySetTrustedSequencerURLIterator, error) { - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "SetTrustedSequencerURL") - if err != nil { - return nil, err - } - return &ProofofefficiencySetTrustedSequencerURLIterator{contract: _Proofofefficiency.contract, event: "SetTrustedSequencerURL", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedSequencerURL is a free log subscription operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchSetTrustedSequencerURL(opts *bind.WatchOpts, sink chan<- *ProofofefficiencySetTrustedSequencerURL) (event.Subscription, error) { - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "SetTrustedSequencerURL") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencySetTrustedSequencerURL) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedSequencerURL is a log parse operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseSetTrustedSequencerURL(log types.Log) (*ProofofefficiencySetTrustedSequencerURL, error) { - event := new(ProofofefficiencySetTrustedSequencerURL) - if err := _Proofofefficiency.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyTrustedVerifyBatchesIterator is returned from FilterTrustedVerifyBatches and is used to iterate over the raw logs and unpacked data for TrustedVerifyBatches events raised by the Proofofefficiency contract. -type ProofofefficiencyTrustedVerifyBatchesIterator struct { - Event *ProofofefficiencyTrustedVerifyBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyTrustedVerifyBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyTrustedVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyTrustedVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyTrustedVerifyBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyTrustedVerifyBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyTrustedVerifyBatches represents a TrustedVerifyBatches event raised by the Proofofefficiency contract. -type ProofofefficiencyTrustedVerifyBatches struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTrustedVerifyBatches is a free log retrieval operation binding the contract event 0x0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7. -// -// Solidity: event TrustedVerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterTrustedVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*ProofofefficiencyTrustedVerifyBatchesIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "TrustedVerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &ProofofefficiencyTrustedVerifyBatchesIterator{contract: _Proofofefficiency.contract, event: "TrustedVerifyBatches", logs: logs, sub: sub}, nil -} - -// WatchTrustedVerifyBatches is a free log subscription operation binding the contract event 0x0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7. -// -// Solidity: event TrustedVerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchTrustedVerifyBatches(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyTrustedVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "TrustedVerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyTrustedVerifyBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "TrustedVerifyBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTrustedVerifyBatches is a log parse operation binding the contract event 0x0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7. -// -// Solidity: event TrustedVerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseTrustedVerifyBatches(log types.Log) (*ProofofefficiencyTrustedVerifyBatches, error) { - event := new(ProofofefficiencyTrustedVerifyBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "TrustedVerifyBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ProofofefficiencyVerifyBatchesIterator is returned from FilterVerifyBatches and is used to iterate over the raw logs and unpacked data for VerifyBatches events raised by the Proofofefficiency contract. -type ProofofefficiencyVerifyBatchesIterator struct { - Event *ProofofefficiencyVerifyBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ProofofefficiencyVerifyBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ProofofefficiencyVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ProofofefficiencyVerifyBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ProofofefficiencyVerifyBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ProofofefficiencyVerifyBatches represents a VerifyBatches event raised by the Proofofefficiency contract. -type ProofofefficiencyVerifyBatches struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterVerifyBatches is a free log retrieval operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) FilterVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*ProofofefficiencyVerifyBatchesIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Proofofefficiency.contract.FilterLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &ProofofefficiencyVerifyBatchesIterator{contract: _Proofofefficiency.contract, event: "VerifyBatches", logs: logs, sub: sub}, nil -} - -// WatchVerifyBatches is a free log subscription operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) WatchVerifyBatches(opts *bind.WatchOpts, sink chan<- *ProofofefficiencyVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Proofofefficiency.contract.WatchLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ProofofefficiencyVerifyBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "VerifyBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseVerifyBatches is a log parse operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Proofofefficiency *ProofofefficiencyFilterer) ParseVerifyBatches(log types.Log) (*ProofofefficiencyVerifyBatches, error) { - event := new(ProofofefficiencyVerifyBatches) - if err := _Proofofefficiency.contract.UnpackLog(event, "VerifyBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/etherman/smartcontracts/script.sh b/etherman/smartcontracts/script.sh index e5c79b4108..4e4b117fe2 100755 --- a/etherman/smartcontracts/script.sh +++ b/etherman/smartcontracts/script.sh @@ -8,8 +8,8 @@ gen() { abigen --bin bin/${package}.bin --abi abi/${package}.abi --pkg=${package} --out=${package}/${package}.go } -gen proofofefficiency -gen bridge +gen polygonzkevm +gen polygonzkevmbridge gen matic -gen globalexitrootmanager +gen polygonzkevmglobalexitroot gen mockverifier \ No newline at end of file diff --git a/etherman/types.go b/etherman/types.go index 8f2af9d635..e9ed97a124 100644 --- a/etherman/types.go +++ b/etherman/types.go @@ -3,7 +3,7 @@ package etherman import ( "time" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/proofofefficiency" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevm" "github.com/ethereum/go-ethereum/common" ) @@ -34,7 +34,7 @@ type SequencedBatch struct { Coinbase common.Address TxHash common.Hash Nonce uint64 - proofofefficiency.ProofOfEfficiencyBatchData + polygonzkevm.PolygonZkEVMBatchData } // ForcedBatch represents a ForcedBatch @@ -63,5 +63,5 @@ type SequencedForceBatch struct { TxHash common.Hash Timestamp time.Time Nonce uint64 - proofofefficiency.ProofOfEfficiencyForcedBatchData + polygonzkevm.PolygonZkEVMForcedBatchData } diff --git a/synchronizer/synchronizer_test.go b/synchronizer/synchronizer_test.go index 06e61244ac..88306d3c09 100644 --- a/synchronizer/synchronizer_test.go +++ b/synchronizer/synchronizer_test.go @@ -8,7 +8,7 @@ import ( cfgTypes "github.com/0xPolygonHermez/zkevm-node/config/types" "github.com/0xPolygonHermez/zkevm-node/etherman" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/proofofefficiency" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevm" "github.com/0xPolygonHermez/zkevm-node/state" "github.com/0xPolygonHermez/zkevm-node/state/runtime/executor/pb" "github.com/ethereum/go-ethereum/common" @@ -77,7 +77,7 @@ func TestTrustedStateReorg(t *testing.T) { BatchNumber: uint64(1), Coinbase: common.HexToAddress("0x222"), TxHash: common.HexToHash("0x333"), - ProofOfEfficiencyBatchData: proofofefficiency.ProofOfEfficiencyBatchData{ + PolygonZkEVMBatchData: polygonzkevm.PolygonZkEVMBatchData{ Transactions: []byte{}, GlobalExitRoot: [32]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, Timestamp: uint64(time.Now().Unix()), @@ -315,7 +315,7 @@ func TestForcedBatch(t *testing.T) { BatchNumber: uint64(2), Coinbase: common.HexToAddress("0x222"), TxHash: common.HexToHash("0x333"), - ProofOfEfficiencyBatchData: proofofefficiency.ProofOfEfficiencyBatchData{ + PolygonZkEVMBatchData: polygonzkevm.PolygonZkEVMBatchData{ Transactions: []byte{}, GlobalExitRoot: [32]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, Timestamp: uint64(time.Now().Unix()), @@ -510,7 +510,7 @@ func TestSequenceForcedBatch(t *testing.T) { BatchNumber: uint64(2), Coinbase: common.HexToAddress("0x222"), TxHash: common.HexToHash("0x333"), - ProofOfEfficiencyForcedBatchData: proofofefficiency.ProofOfEfficiencyForcedBatchData{ + PolygonZkEVMForcedBatchData: polygonzkevm.PolygonZkEVMForcedBatchData{ Transactions: []byte{}, GlobalExitRoot: [32]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, MinForcedTimestamp: 1000, //ForcedBatch diff --git a/test/aggregator.keystore b/test/aggregator.keystore index 96b662b7eb..36adf8bc3f 100644 --- a/test/aggregator.keystore +++ b/test/aggregator.keystore @@ -1 +1 @@ -{"address":"f39fd6e51aad88f6f4ce6ab8827279cfffb92266","crypto":{"cipher":"aes-128-ctr","ciphertext":"d005030a7684f3adad2447cbb27f63039eec2224c451eaa445de0d90502b9f3d","cipherparams":{"iv":"dc07a54bc7e388efa89c34d42f2ebdb4"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"cf2ec55ecae11171de575112cfb16963570533a9c46fb774473ceb11519eb24a"},"mac":"3eb180d405a5da6e462b2adc00091c14856c91d574bf27348714506357d6e177"},"id":"035454db-6b6d-477f-8a79-ce24c10b185f","version":3} \ No newline at end of file +{"version":3,"id":"71b028b6-9b1d-4f4c-9e66-31c94a6eb679","address":"70997970c51812dc3a010c7d01b50e0d17dc79c8","crypto":{"ciphertext":"985d5dc5f7750fc4ad0ad0d370486870016bb97e00ef1f7b146d6ad95d456861","cipherparams":{"iv":"f51b18b9f45872f71c3578513fca6cb0"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"6253e2d8a71e4808dd11143329cfea467cabb37ac1e1e55dbc0dd90ff22524a7","n":8192,"r":8,"p":1},"mac":"922f741e84201fc7c17bbf9fae5dba6c04a2a99a7268998b5a0268aa690004be"}} \ No newline at end of file diff --git a/test/config/debug.node.config.toml b/test/config/debug.node.config.toml index 365344def5..7073c5660f 100644 --- a/test/config/debug.node.config.toml +++ b/test/config/debug.node.config.toml @@ -15,7 +15,7 @@ EnableLog = true MaxConns = 10 [Pool] -FreeClaimGasLimit = 150000 +FreeClaimGasLimit = 1500000 [Pool.DB] User = "pool_user" Password = "pool_password" @@ -90,7 +90,7 @@ IntervalToSendFinalProof = "30s" TxProfitabilityCheckerType = "acceptall" TxProfitabilityMinReward = "1.1" IntervalFrequencyToGetProofGenerationState = "5s" -SenderAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" +SenderAddress = "0x70997970c51812dc3a010c7d01b50e0d17dc79c8" [EthTxManager] PrivateKeys = [ diff --git a/test/config/test.genesis.config.json b/test/config/test.genesis.config.json index 769433a600..d4caae4a65 100644 --- a/test/config/test.genesis.config.json +++ b/test/config/test.genesis.config.json @@ -1,16 +1,15 @@ { - "root": "0xbf34f9a52a63229e90d1016011655bc12140bba5b771817b88cbf340d08dcbde", + "root": "0x16851d9301e0a13a24dab6b0baec16a73502cdce67e3d3efa2629c86940d34f4", "genesis": [ { - "balance": "100000000000000000000000", + "balance": "200000000000000000000000000", "nonce": "1", "address": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", - "bytecode": "0x608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f13660046200316c565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e62000288366004620031f9565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de36600462003235565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b5062000240620003653660046200333d565b62000ea4565b3480156200037857600080fd5b50620002116200038a366004620033bb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b366004620034cc565b62000fa6565b3480156200047e57600080fd5b50620001f762000490366004620035b3565b6200122c565b348015620004a357600080fd5b50620001f762001412565b348015620004bb57600080fd5b50620001f7620004cd366004620034cc565b62001428565b348015620004e057600080fd5b506200028e620004f236600462003609565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e6200059836600462003623565b620019ea565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f762000606366004620036d7565b62001b56565b3480156200061957600080fd5b50620001f762001e0a565b3480156200063157600080fd5b50620002406200064336600462003609565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f76200067736600462003609565b62001ebc565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b336600462003235565b62001f01565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096191906200374e565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f97565b620009a06001600160a01b038b1633308a620025bc565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a219190810190620037e9565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a9190810190620037e9565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef919062003822565b60405160200162000b039392919062003870565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b59989796959493929190620038ad565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002675565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d9565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de862003919565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e5660028462003977565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e9290620039b3565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf62003919565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f3762003919565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f8060028362003977565b91508062000f8e81620039b3565b91505062000eb4565b5050821490505b949350505050565b60225460ff1615620010475760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105d8a8a8a8a8a8a8a8a8a8a6001620028b2565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b038516908490620010a09089908b908790602401620039ee565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001105919062003a27565b60006040518083038185875af1925050503d806000811462001144576040519150601f19603f3d011682016040523d82523d6000602084013e62001149565b606091505b5050905080620011c15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124d5750600054600160ff909116105b80620012695750303b15801562001269575060005460ff166001145b620012dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a762002c65565b80156200140b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141c62002cef565b62000d2c600062002d4b565b60225460ff1615620014c95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014df8a8a8a8a8a8a8a8a8a8a6000620028b2565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fe57604080516000808252602082019092526001600160a01b0385169084906040516200153a919062003a27565b60006040518083038185875af1925050503d806000811462001579576040519150601f19603f3d011682016040523d82523d6000602084013e6200157e565b606091505b5050905080620015f75760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b5062001980565b60875463ffffffff908116908716036200162e57620016286001600160a01b038616848462002db5565b62001980565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ec57600080600085806020019051810190620016ce919062003a45565b925092509250600085848484604051620016e890620030d5565b620016f69392919062003870565b8190604051809103906000f590508015801562001717573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab91906200374e565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018da9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197d565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b91906200374e565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6d90620030d5565b601f1982820381018352601f90910116604081905262001a9a908d908d908d908d908d9060200162003af1565b60408051601f198184030181529082905262001aba929160200162003b32565b6040516020818303038152906040528051906020012060405160200162001b3094939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c7a5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc79260019263ffffffff9092169133918991899134918a9190620038ad565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d979062002675565b608b546001600160a01b03166333d6247d62001db262000db1565b6040518263ffffffff1660e01b815260040162001dd191815260200190565b600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb25760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002e00565b62001ec662002cef565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0b62002cef565b6001600160a01b03811662001f895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f948162002d4b565b50565b600062001fda83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002eaf92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022dc5760008080808080806200203d896004818d62003b65565b8101906200204c919062003b91565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e35760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021635760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021da5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002288919062003a27565b6000604051808303816000865af19150503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b505050505050505050506200140b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236f5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023878a6004818e62003b65565b81019062002396919062003bec565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242f5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024af5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002566919062003a27565b6000604051808303816000865af19150503d8060008114620025a5576040519150601f19603f3d011682016040523d82523d6000602084013e620025aa565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002eb6565b50505050565b806001620026866020600262003db1565b62002692919062003dbf565b602154106200270a5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271f919062003dd9565b909155505060215460005b6020811015620027c957816001166001036200275f57826001826020811062002757576200275762003919565b015550505050565b6001816020811062002775576200277562003919565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b2919062003977565b915080620027c081620039b3565b9150506200272a565b50620027d462003df4565b505050565b60225460ff16156200287a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293f5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f2919062003e23565b9050801580159062002a115750608d5462002a0e824262003dbf565b10155b62002aab5760405162461bcd60e51b815260206004820152604260248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49445f4f525f4e4f545f5945545f434c41494d414260648201527f4c45000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff87811691161462002b2d5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b4657508862002b49565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002c17908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002ce45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d4b565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200260a565b60225460ff1662002e7a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002f0d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002fa29092919063ffffffff16565b805190915015620027d4578080602001905181019062002f2e91906200374e565b620027d45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062000f9e848460008585600080866001600160a01b0316858760405162002fcc919062003a27565b60006040518083038185875af1925050503d80600081146200300b576040519150601f19603f3d011682016040523d82523d6000602084013e62003010565b606091505b509150915062003023878383876200302e565b979650505050505050565b60608315620030a25782516000036200309a576001600160a01b0385163b6200309a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b508162000f9e565b62000f9e8383815115620030b95781518083602001fd5b8060405162461bcd60e51b81526004016200076c919062003e3d565b6119c78062003e5383390190565b6001600160a01b038116811462001f9457600080fd5b80356200310681620030e3565b919050565b803563ffffffff811681146200310657600080fd5b60008083601f8401126200313357600080fd5b50813567ffffffffffffffff8111156200314c57600080fd5b6020830191508360208285010111156200316557600080fd5b9250929050565b60008060008060008060a087890312156200318657600080fd5b86356200319381620030e3565b9550620031a3602088016200310b565b94506040870135620031b581620030e3565b935060608701359250608087013567ffffffffffffffff811115620031d957600080fd5b620031e789828a0162003120565b979a9699509497509295939492505050565b600080604083850312156200320d57600080fd5b62003218836200310b565b915060208301356200322a81620030e3565b809150509250929050565b6000602082840312156200324857600080fd5b81356200325581620030e3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620032b757620032b76200325c565b604052919050565b600082601f830112620032d157600080fd5b8135602067ffffffffffffffff821115620032f057620032f06200325c565b8160051b620033018282016200328b565b92835284810182019282810190878511156200331c57600080fd5b83870192505b84831015620030235782358252918301919083019062003322565b600080600080608085870312156200335457600080fd5b84359350602085013567ffffffffffffffff808211156200337457600080fd5b6200338288838901620032bf565b94506040870135915080821682146200339a57600080fd5b509396929550929360600135925050565b60ff8116811462001f9457600080fd5b600080600080600080600060e0888a031215620033d757600080fd5b8735620033e481620033ab565b9650620033f4602089016200310b565b955060408801356200340681620030e3565b945062003416606089016200310b565b935060808801356200342881620030e3565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200346257620034626200325c565b50601f01601f191660200190565b600082601f8301126200348257600080fd5b813562003499620034938262003445565b6200328b565b818152846020838601011115620034af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620034ed57600080fd5b8a3567ffffffffffffffff808211156200350657600080fd5b620035148e838f01620032bf565b9b506200352460208e016200310b565b9a5060408d0135995060608d013598506200354260808e016200310b565b97506200355260a08e01620030f9565b96506200356260c08e016200310b565b95506200357260e08e01620030f9565b94506101008d013593506101208d01359150808211156200359257600080fd5b50620035a18d828e0162003470565b9150509295989b9194979a5092959850565b60008060008060808587031215620035ca57600080fd5b620035d5856200310b565b93506020850135620035e781620030e3565b92506040850135620035f981620030e3565b9396929550929360600135925050565b6000602082840312156200361c57600080fd5b5035919050565b600080600080600080600060a0888a0312156200363f57600080fd5b6200364a886200310b565b965060208801356200365c81620030e3565b9550604088013567ffffffffffffffff808211156200367a57600080fd5b620036888b838c0162003120565b909750955060608a0135915080821115620036a257600080fd5b50620036b18a828b0162003120565b9094509250506080880135620036c781620033ab565b8091505092959891949750929550565b600080600060608486031215620036ed57600080fd5b620036f8846200310b565b925060208401356200370a81620030e3565b9150604084013567ffffffffffffffff8111156200372757600080fd5b620037358682870162003470565b9150509250925092565b801515811462001f9457600080fd5b6000602082840312156200376157600080fd5b815162003255816200373f565b60005b838110156200378b57818101518382015260200162003771565b838111156200266f5750506000910152565b600082601f830112620037af57600080fd5b8151620037c0620034938262003445565b818152846020838601011115620037d657600080fd5b62000f9e8260208301602087016200376e565b600060208284031215620037fc57600080fd5b815167ffffffffffffffff8111156200381457600080fd5b62000f9e848285016200379d565b6000602082840312156200383557600080fd5b81516200325581620033ab565b600081518084526200385c8160208601602086016200376e565b601f01601f19169290920160200192915050565b60608152600062003885606083018662003842565b828103602084015262003899818662003842565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620039008285018762003842565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082620039ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039e757620039e762003948565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a1e606083018462003842565b95945050505050565b6000825162003a3b8184602087016200376e565b9190910192915050565b60008060006060848603121562003a5b57600080fd5b835167ffffffffffffffff8082111562003a7457600080fd5b62003a82878388016200379d565b9450602086015191508082111562003a9957600080fd5b5062003aa8868287016200379d565b925050604084015162003abb81620033ab565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003b0760608301878962003ac6565b828103602084015262003b1c81868862003ac6565b91505060ff831660408301529695505050505050565b6000835162003b468184602088016200376e565b83519083019062003b5c8183602088016200376e565b01949350505050565b6000808585111562003b7657600080fd5b8386111562003b8457600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003bad57600080fd5b873562003bba81620030e3565b9650602088013562003bcc81620030e3565b9550604088013594506060880135935060808801356200342881620033ab565b600080600080600080600080610100898b03121562003c0a57600080fd5b883562003c1781620030e3565b9750602089013562003c2981620030e3565b96506040890135955060608901359450608089013562003c49816200373f565b935060a089013562003c5b81620033ab565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003cd757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003cbb5762003cbb62003948565b8085161562003cc957918102915b93841c939080029062003c7d565b509250929050565b60008262003cf05750600162000dab565b8162003cff5750600062000dab565b816001811462003d18576002811462003d235762003d43565b600191505062000dab565b60ff84111562003d375762003d3762003948565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003d68575081810a62000dab565b62003d74838362003c78565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003da95762003da962003948565b029392505050565b600062003255838362003cdf565b60008282101562003dd45762003dd462003948565b500390565b6000821982111562003def5762003def62003948565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e3657600080fd5b5051919050565b6020815260006200325560208301846200384256fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a26469706673582212207d802e4c153f08d52b883999d6ed4e590e1894e2db82359c2f8cde0298f066c464736f6c634300080f0033", + "bytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x01", - "0x0000000000000000000000000000000000000000000000000000000000000055": "0xc949254d682d8c9ad5682521675b8f43b102aec4", - "0x0000000000000000000000000000000000000000000000000000000000000087": "0x01", - "0x000000000000000000000000000000000000000000000000000000000000008b": "0xae4bb80be56b819606589de61d5ec3b522eeb032" + "0x0000000000000000000000000000000000000000000000000000000000000022": "0x0100", + "0x0000000000000000000000000000000000000000000000000000000000000026": "0xae4bb80be56b819606589de61d5ec3b522eeb032" }, "contractName": "PolygonZkEVMBridge" }, @@ -30,11 +29,48 @@ "balance": "0", "nonce": "1", "address": "0xae4bb80be56b819606589de61d5ec3b522eeb032", - "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610197565b60006020819052908152604090205481565b6100a061009b366004610197565b6100e7565b005b6002546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610064565b60025473ffffffffffffffffffffffffffffffffffffffff163314610192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b600155565b6000602082840312156101a957600080fd5b503591905056fea2646970667358221220fea7fcab965a97796cf30d6ff699830b40cf06628fa4f9baf7c5725155af254564736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000002": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" }, "contractName": "PolygonZkEVMGlobalExitRootL2" } + ], + "transactions": [ + { + "rawTx": "0xf902768080839896808080b90266608060405234801561001057600080fd5b5060405161024638038061024683398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6101b3806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f00330000000000000000000000009d98deabc42dd696deb9e40b4f1cab7ddbf559888203e8808062c7b6ed3f97f48cb0c909b6fc5fa0bda9ae0392c5e3c6abb883afff10d8843d354c515eb025b1ea82e17a389a23d5d4b0b6dbc45cbf215d181958094d03c4b11b", + "receipt": { + "status": 1, + "gasUsed": "0x029ed4", + "logs": [] + }, + "createAddress": "0xae4bb80be56b819606589de61d5ec3b522eeb032" + }, + { + "rawTx": "0xf947fe0180839896808080b947ee608060405234801561001057600080fd5b506147ce806100206000396000f3fe608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f00338203e88080777dd3dc8232ea55dbedf0681a6a9134de7200ab1334a6015345d9257ef62971780fe992e94f761de3335283ba6c1d9f3f512e05503d4526f62eb9644a1cf5681c", + "receipt": { + "status": 1, + "gasUsed": "0x3d3cde", + "logs": [] + }, + "createAddress": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" + }, + { + "rawTx": "0xf887028083989680949d98deabc42dd696deb9e40b4f1cab7ddbf5598880b864647c576c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ae4bb80be56b819606589de61d5ec3b522eeb03200000000000000000000000000000000000000000000000000000000000000008203e8808052465a317fd5c147ded90409a32915bbe579c557787787abbc17e67a47f773694f7fa1fd7b14ab8175e1725ec18cee985bcc262340ad5a215b097f2b3a880ee41b", + "receipt": { + "status": 1, + "gasUsed": "0x016aa5", + "logs": [ + [ + "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", + [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "0x0000000000000000000000000000000000000000000000000000000000000001" + ] + ] + }, + "createAddress": null + } ] -} +} \ No newline at end of file diff --git a/test/config/test.node.config.toml b/test/config/test.node.config.toml index a98a3eb696..c7114c5797 100644 --- a/test/config/test.node.config.toml +++ b/test/config/test.node.config.toml @@ -15,7 +15,7 @@ EnableLog = false MaxConns = 200 [Pool] -FreeClaimGasLimit = 150000 +FreeClaimGasLimit = 1500000 [Pool.DB] User = "pool_user" Password = "pool_password" @@ -88,7 +88,7 @@ VerifyProofInterval = "30s" TxProfitabilityCheckerType = "acceptall" TxProfitabilityMinReward = "1.1" ProofStatePollingInterval = "5s" -SenderAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" +SenderAddress = "0x70997970c51812dc3a010c7d01b50e0d17dc79c8" [EthTxManager] PrivateKeys = [ diff --git a/test/docker-compose.yml b/test/docker-compose.yml index f52ca4f966..ec74025592 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -292,8 +292,7 @@ services: zkevm-mock-l1-network: container_name: zkevm-mock-l1-network - # image: hermeznetwork/geth-zkevm-contracts@sha256:24754a773b803ce0de8278c02bb756757b09fda65dc993e560a0b76a09b88248 - image: hermeznetwork/geth-zkevm-contracts:test + image: hermeznetwork/geth-zkevm-contracts:v0.6.0.0 ports: - 8545:8545 - 8546:8546 diff --git a/tools/rlp/main.go b/tools/rlp/main.go index 824bc2172d..1e0ab486ae 100644 --- a/tools/rlp/main.go +++ b/tools/rlp/main.go @@ -8,7 +8,7 @@ import ( "strings" "github.com/0xPolygonHermez/zkevm-node/encoding" - "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/proofofefficiency" + "github.com/0xPolygonHermez/zkevm-node/etherman/smartcontracts/polygonzkevm" "github.com/0xPolygonHermez/zkevm-node/hex" "github.com/0xPolygonHermez/zkevm-node/log" "github.com/0xPolygonHermez/zkevm-node/state" @@ -253,7 +253,7 @@ func decodeFullCallDataToTxs(txsData []byte) ([]types.Transaction, []byte, error // Extract coded txs. // Load contract ABI - abi, err := abi.JSON(strings.NewReader(proofofefficiency.ProofofefficiencyABI)) + abi, err := abi.JSON(strings.NewReader(polygonzkevm.PolygonzkevmABI)) if err != nil { log.Fatal("error reading smart contract abi: ", err) }