Commit 00f13077 authored by clabby's avatar clabby Committed by GitHub

feat(ctb): Add Cancun activation timestamp to `PreimageOracle` (#9307)

* Add `CANCUN_ACTIVATION` timestamp to preimage oracle

* chores

* fix: add the cancun activation timestamp

* fix: add cancun activation field to full deploy config testdata:

---------
Co-authored-by: default avatarrefcell <abigger87@gmail.com>
parent a422f56b
......@@ -31,7 +31,7 @@ var (
// AlphabetVMMetaData contains all meta data concerning the AlphabetVM contract.
var AlphabetVMMetaData = &bind.MetaData{
ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_absolutePrestate\",\"type\":\"bytes32\",\"internalType\":\"Claim\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"oracle\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPreimageOracle\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"step\",\"inputs\":[{\"name\":\"_stateData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_localContext\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"postState_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"}]",
Bin: "0x60a060405234801561001057600080fd5b50604051613b16380380613b1683398101604081905261002f916100a0565b6080819052604051600090819061004590610093565b9182526020820152604001604051809103906000f08015801561006c573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506100b9565b61353f806105d783390190565b6000602082840312156100b257600080fd5b5051919050565b6080516105046100d3600039600060af01526105046000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637dc0d1d01461003b578063e14ced3214610085575b600080fd5b60005461005b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610098610093366004610395565b6100a6565b60405190815260200161007c565b600080600060087f0000000000000000000000000000000000000000000000000000000000000000901b600889896040516100e2929190610409565b6040518091039020901b036101d9576000805473ffffffffffffffffffffffffffffffffffffffff1663e03110e161011b60048861029f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526004810191909152600060248201526044016040805180830381865afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101999190610419565b50640ffffffff0607c82901c169350905063ffffffff608082901c1660006101c38a8c018c61043d565b90506101cf8582610485565b9350505050610206565b6101e58789018961049d565b9092509050816101f4816104bf565b9250508080610202906104bf565b9150505b6040805160208101849052908101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001798975050505050505050565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831617610345818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60008083601f84011261035e57600080fd5b50813567ffffffffffffffff81111561037657600080fd5b60208301915083602082850101111561038e57600080fd5b9250929050565b6000806000806000606086880312156103ad57600080fd5b853567ffffffffffffffff808211156103c557600080fd5b6103d189838a0161034c565b909750955060208801359150808211156103ea57600080fd5b506103f78882890161034c565b96999598509660400135949350505050565b8183823760009101908152919050565b6000806040838503121561042c57600080fd5b505080516020909101519092909150565b60006020828403121561044f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561049857610498610456565b500190565b600080604083850312156104b057600080fd5b50508035926020909101359150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036104f0576104f0610456565b506001019056fea164736f6c634300080f000a60c06040523480156200001157600080fd5b506040516200353f3803806200353f8339810160408190526200003491620000f3565b60a0829052608081905260005b6200004f600160106200012e565b811015620000ea57600381601081106200006d576200006d62000148565b01546003826010811062000085576200008562000148565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206003826001620000c091906200015e565b60108110620000d357620000d362000148565b015580620000e18162000179565b91505062000041565b50505062000195565b600080604083850312156200010757600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b60008282101562000143576200014362000118565b500390565b634e487b7160e01b600052603260045260246000fd5b6000821982111562000174576200017462000118565b500190565b6000600182016200018e576200018e62000118565b5060010190565b60805160a051613376620001c9600039600081816103f9015261192a01526000818161046d01526111d701526133766000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c136600461292d565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a61020536600461296f565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612b6a565b610641565b005b61020a61088f565b61020a61024b366004612c56565b6108aa565b61020a61025e366004612c91565b600160209081526000928352604080842090915290825290205481565b61020a61028936600461296f565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612cf5565b61097f565b61020a6102c736600461292d565b610e0d565b6102fa6102da366004612c91565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612d91565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612dc4565b610e7e565b61020a61035736600461296f565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612e10565b610f79565b61020a6103ac36600461296f565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612d91565b611130565b6102336103ea366004612b6a565b611162565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612c91565b61152d565b604080519283526020830191909152016101ee565b610233610453366004612dc4565b61161e565b610233610466366004612e9c565b611726565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612f35565b6118a0565b61020a6104b236600461292d565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac612f71565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3612f71565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181612fcf565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d613007565b611ab3565b611af3565b801561068e575061068e838383602088013561066b6106668a613007565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da91906130d6565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d9190613114565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc88610782868061312c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5492505050565b6107c588611caf565b8360400135886040516020016107db91906130d6565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d601060026132b3565b6108a791906132bf565b81565b60006108b6868661254b565b90506108c3836008613114565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b606081156109985761099186866125f8565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d8886612671565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a91906132b3565b610c9491906132bf565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a613114565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d93908460106128a3565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b600080603087600037602060006030600060025afa80610fa15763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa925082611023576309bde3396000526004601cfd5b602886106110395763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b6014602052826000526040600020602052816000526040600020816010811061115857600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff8116156111d5576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006112008260c01c90565b6112149067ffffffffffffffff16426132bf565b1161124b576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112578b8b610509565b905061127087878360208c013561066b6106668e613007565b801561128e575061128e848483602089013561066b6106668b613007565b6112c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016112da91906130d6565b6040516020818303038152906040528051906020012014611327576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84602001358860200135600161133d9190613114565b14158061136f575060016113578360601c63ffffffff1690565b61136191906132d6565b63ffffffff16856020013514155b156113a6576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113b88360801c63ffffffff1690565b63ffffffff169050806113d18460401c63ffffffff1690565b63ffffffff161461140e576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61141c8a610782888061312c565b6114258a611caf565b60006114308b6127c4565b905060006114448560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff166115b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b50600083815260208181526040909120546115d2816008613114565b6115dd856020613114565b106115fb57836115ee826008613114565b6115f891906132bf565b91505b506000938452600160209081526040808620948652939052919092205492909150565b60443560008060088301861061163c5763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b60006117328686610509565b905061174b838383602088013561066b6106668a613007565b611781576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840135156117bd576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c56128e1565b6117d381610782878061312c565b6117dc81611caf565b8460400135816040516020016117f291906130d6565b604051602081830303815290604052805190602001200361183f576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b3332146118d9576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e48160086132fb565b63ffffffff168263ffffffff1610611928576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161015611988576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611ad693929190613323565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611b47578060051b880135600186831c1660018114611b2c5760008481526020839052604090209350611b3d565b600082815260208590526040902093505b5050600101611af9565b5090931495945050505050565b6088815114611b6257600080fd5b6020810160208301611be3565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611bdd81611bc8868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611bef60008383611b6f565b611bfb60018383611b6f565b611c0760028383611b6f565b611c1360038383611b6f565b611c1f60048383611b6f565b611c2b60058383611b6f565b611c3760068383611b6f565b611c4360078383611b6f565b611c4f60088383611b6f565b611c5b60098383611b6f565b611c67600a8383611b6f565b611c73600b8383611b6f565b611c7f600c8383611b6f565b611c8b600d8383611b6f565b611c97600e8383611b6f565b611ca3600f8383611b6f565b611bdd60108383611b6f565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e0016040516020818303038152906040529050602082016020820161242b565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611e628660011b67ffffffffffffffff1690565b18188584603f1c611e7d8660011b67ffffffffffffffff1690565b18188584603f1c611e988660011b67ffffffffffffffff1690565b181895508483603f1c611eb58560011b67ffffffffffffffff1690565b181894508387603f1c611ed28960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b61225281611da5565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611bdd565b61243760008284612249565b61244360018284612249565b61244f60028284612249565b61245b60038284612249565b61246760048284612249565b61247360058284612249565b61247f60068284612249565b61248b60078284612249565b61249760088284612249565b6124a360098284612249565b6124af600a8284612249565b6124bb600b8284612249565b6124c7600c8284612249565b6124d3600d8284612249565b6124df600e8284612249565b6124eb600f8284612249565b6124f760108284612249565b61250360118284612249565b61250f60128284612249565b61251b60138284612249565b61252760148284612249565b61253360158284612249565b61253f60168284612249565b611bdd60178284612249565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316176125f1818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60606040519050816020820181810182868337608883068080156126415760888290038501848101848103803687375060806001820353506001845160001a1784538652612658565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006126838260a01c63ffffffff1690565b67ffffffffffffffff16905060006126a18360801c63ffffffff1690565b63ffffffff16905060006126bb8460401c63ffffffff1690565b63ffffffff1690506008831080156126d1575080155b156127055760c082901b6000908152883560085283513382526016602090815260408084208a8552909152909120556127ba565b6008831015801561272357508061271d6008856132bf565b93508310155b801561273757506127348782613114565b83105b156127ba57600061274882856132bf565b905087612756826020613114565b10158015612762575085155b15612799576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b6000612847565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff006127f58360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff00006128228360101b67ffffffffffffffff1690565b1617905060008160201c6128408360201b67ffffffffffffffff1690565b1792915050565b6080820151602083019061285f906127cb565b6127cb565b604082015161286d906127cb565b60401b1761288561285a60018460059190911b015190565b825160809190911b90612897906127cb565b60c01b17179392505050565b82601081019282156128d1579160200282015b828111156128d15782518255916020019190600101906128b6565b506128dd9291506128f9565b5090565b60405180602001604052806128f461290e565b905290565b5b808211156128dd57600081556001016128fa565b6040518061032001604052806019906020820280368337509192915050565b60006020828403121561293f57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461296a57600080fd5b919050565b6000806040838503121561298257600080fd5b61298b83612946565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff811182821017156129ec576129ec612999565b60405290565b6040516060810167ffffffffffffffff811182821017156129ec576129ec612999565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a5c57612a5c612999565b604052919050565b6000610320808385031215612a7857600080fd5b604051602080820167ffffffffffffffff8382108183111715612a9d57612a9d612999565b8160405283955087601f880112612ab357600080fd5b612abb6129c8565b9487019491508188861115612acf57600080fd5b875b86811015612af75780358381168114612aea5760008081fd5b8452928401928401612ad1565b50909352509295945050505050565b600060608284031215612b1857600080fd5b50919050565b60008083601f840112612b3057600080fd5b50813567ffffffffffffffff811115612b4857600080fd5b6020830191508360208260051b8501011115612b6357600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612b8957600080fd5b612b928a612946565b985060208a01359750612ba88b60408c01612a64565b96506103608a013567ffffffffffffffff80821115612bc657600080fd5b612bd28d838e01612b06565b97506103808c0135915080821115612be957600080fd5b612bf58d838e01612b1e565b90975095506103a08c0135915080821115612c0f57600080fd5b612c1b8d838e01612b06565b94506103c08c0135915080821115612c3257600080fd5b50612c3f8c828d01612b1e565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612c6e57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612ca457600080fd5b50508035926020909101359150565b60008083601f840112612cc557600080fd5b50813567ffffffffffffffff811115612cdd57600080fd5b602083019150836020828501011115612b6357600080fd5b600080600080600080600060a0888a031215612d1057600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612d3657600080fd5b612d428b838c01612cb3565b909750955060608a0135915080821115612d5b57600080fd5b50612d688a828b01612b1e565b90945092505060808801358015158114612d8157600080fd5b8091505092959891949750929550565b600080600060608486031215612da657600080fd5b612daf84612946565b95602085013595506040909401359392505050565b600080600060408486031215612dd957600080fd5b83359250602084013567ffffffffffffffff811115612df757600080fd5b612e0386828701612cb3565b9497909650939450505050565b600080600080600080600060a0888a031215612e2b57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612e5157600080fd5b612e5d8b838c01612cb3565b909750955060608a0135915080821115612e7657600080fd5b50612e838a828b01612cb3565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612eb457600080fd5b612ebd86612946565b945060208601359350604086013567ffffffffffffffff80821115612ee157600080fd5b612eed89838a01612b06565b94506060880135915080821115612f0357600080fd5b50612f1088828901612b1e565b969995985093965092949392505050565b803563ffffffff8116811461296a57600080fd5b600080600060608486031215612f4a57600080fd5b83359250612f5a60208501612f21565b9150612f6860408501612f21565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300057613000612fa0565b5060010190565b60006060823603121561301957600080fd5b6130216129f2565b823567ffffffffffffffff8082111561303957600080fd5b9084019036601f83011261304c57600080fd5b813560208282111561306057613060612999565b613090817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612a15565b925081835236818386010111156130a657600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b601981101561310b57825167ffffffffffffffff168252602092830192909101906001016130e2565b50505092915050565b6000821982111561312757613127612fa0565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261316157600080fd5b83018035915067ffffffffffffffff82111561317c57600080fd5b602001915036819003821315612b6357600080fd5b600181815b808511156131ea57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156131d0576131d0612fa0565b808516156131dd57918102915b93841c9390800290613196565b509250929050565b600082613201575060016132ad565b8161320e575060006132ad565b8160018114613224576002811461322e5761324a565b60019150506132ad565b60ff84111561323f5761323f612fa0565b50506001821b6132ad565b5060208310610133831016604e8410600b841016171561326d575081810a6132ad565b6132778383613191565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156132a9576132a9612fa0565b0290505b92915050565b60006125f183836131f2565b6000828210156132d1576132d1612fa0565b500390565b600063ffffffff838116908316818110156132f3576132f3612fa0565b039392505050565b600063ffffffff80831681851680830382111561331a5761331a612fa0565b01949350505050565b6000845160005b81811015613344576020818801810151858301520161332a565b81811115613353576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a",
Bin: "0x60a060405234801561001057600080fd5b50604051613b95380380613b9583398101604081905261002f916100ab565b806080818152505060008060006040516100489061009e565b92835260208301919091526040820152606001604051809103906000f080158015610077573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506100c4565b6135b3806105e283390190565b6000602082840312156100bd57600080fd5b5051919050565b6080516105046100de600039600060af01526105046000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637dc0d1d01461003b578063e14ced3214610085575b600080fd5b60005461005b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610098610093366004610395565b6100a6565b60405190815260200161007c565b600080600060087f0000000000000000000000000000000000000000000000000000000000000000901b600889896040516100e2929190610409565b6040518091039020901b036101d9576000805473ffffffffffffffffffffffffffffffffffffffff1663e03110e161011b60048861029f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526004810191909152600060248201526044016040805180830381865afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101999190610419565b50640ffffffff0607c82901c169350905063ffffffff608082901c1660006101c38a8c018c61043d565b90506101cf8582610485565b9350505050610206565b6101e58789018961049d565b9092509050816101f4816104bf565b9250508080610202906104bf565b9150505b6040805160208101849052908101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001798975050505050505050565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831617610345818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60008083601f84011261035e57600080fd5b50813567ffffffffffffffff81111561037657600080fd5b60208301915083602082850101111561038e57600080fd5b9250929050565b6000806000806000606086880312156103ad57600080fd5b853567ffffffffffffffff808211156103c557600080fd5b6103d189838a0161034c565b909750955060208801359150808211156103ea57600080fd5b506103f78882890161034c565b96999598509660400135949350505050565b8183823760009101908152919050565b6000806040838503121561042c57600080fd5b505080516020909101519092909150565b60006020828403121561044f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561049857610498610456565b500190565b600080604083850312156104b057600080fd5b50508035926020909101359150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036104f0576104f0610456565b506001019056fea164736f6c634300080f000a60e06040523480156200001157600080fd5b50604051620035b3380380620035b38339810160408190526200003491620000f9565b60c083905260a0829052608081905260005b62000054600160106200013e565b811015620000ef576003816010811062000072576200007262000158565b0154600382601081106200008a576200008a62000158565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206003826001620000c591906200016e565b60108110620000d857620000d862000158565b015580620000e68162000189565b91505062000046565b50505050620001a5565b6000806000606084860312156200010f57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b60008282101562000153576200015362000128565b500390565b634e487b7160e01b600052603260045260246000fd5b6000821982111562000184576200018462000128565b500190565b6000600182016200019e576200019e62000128565b5060010190565b60805160a05160c0516133d0620001e3600039600081816103f9015261198401526000818161046d015261123101526000610f7b01526133d06000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c1366004612987565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a6102053660046129c9565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612bc4565b610641565b005b61020a61088f565b61020a61024b366004612cb0565b6108aa565b61020a61025e366004612ceb565b600160209081526000928352604080842090915290825290205481565b61020a6102893660046129c9565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612d4f565b61097f565b61020a6102c7366004612987565b610e0d565b6102fa6102da366004612ceb565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612deb565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612e1e565b610e7e565b61020a6103573660046129c9565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612e6a565b610f79565b61020a6103ac3660046129c9565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612deb565b61118a565b6102336103ea366004612bc4565b6111bc565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612ceb565b611587565b604080519283526020830191909152016101ee565b610233610453366004612e1e565b611678565b610233610466366004612ef6565b611780565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612f8f565b6118fa565b61020a6104b2366004612987565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac612fcb565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3612fcb565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181613029565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d613061565b611b0d565b611b4d565b801561068e575061068e838383602088013561066b6106668a613061565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da9190613130565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d919061316e565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc886107828680613186565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bae92505050565b6107c588611d09565b8360400135886040516020016107db9190613130565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d6010600261330d565b6108a79190613319565b81565b60006108b686866125a5565b90506108c383600861316e565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b60608115610998576109918686612652565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d88866126cb565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a919061330d565b610c949190613319565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a61316e565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d93908460106128fd565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b7f0000000000000000000000000000000000000000000000000000000000000000421015610fd3576040517f299f254900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080603087600037602060006030600060025afa80610ffb5763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa92508261107d576309bde3396000526004601cfd5b602886106110935763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b601460205282600052604060002060205281600052604060002081601081106111b257600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff81161561122f576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061125a8260c01c90565b61126e9067ffffffffffffffff1642613319565b116112a5576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112b18b8b610509565b90506112ca87878360208c013561066b6106668e613061565b80156112e857506112e8848483602089013561066b6106668b613061565b61131e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016113349190613130565b6040516020818303038152906040528051906020012014611381576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846020013588602001356001611397919061316e565b1415806113c9575060016113b18360601c63ffffffff1690565b6113bb9190613330565b63ffffffff16856020013514155b15611400576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114128360801c63ffffffff1690565b63ffffffff1690508061142b8460401c63ffffffff1690565b63ffffffff1614611468576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114768a6107828880613186565b61147f8a611d09565b600061148a8b61281e565b9050600061149e8560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff16611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b506000838152602081815260409091205461162c81600861316e565b61163785602061316e565b10611655578361164882600861316e565b6116529190613319565b91505b506000938452600160209081526040808620948652939052919092205492909150565b6044356000806008830186106116965763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b600061178c8686610509565b90506117a5838383602088013561066b6106668a613061565b6117db576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084013515611817576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181f61293b565b61182d816107828780613186565b61183681611d09565b84604001358160405160200161184c9190613130565b6040516020818303038152906040528051906020012003611899576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b333214611933576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193e816008613355565b63ffffffff168263ffffffff1610611982576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff1610156119e2576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611b309392919061337d565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611ba1578060051b880135600186831c1660018114611b865760008481526020839052604090209350611b97565b600082815260208590526040902093505b5050600101611b53565b5090931495945050505050565b6088815114611bbc57600080fd5b6020810160208301611c3d565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611c3781611c22868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611c4960008383611bc9565b611c5560018383611bc9565b611c6160028383611bc9565b611c6d60038383611bc9565b611c7960048383611bc9565b611c8560058383611bc9565b611c9160068383611bc9565b611c9d60078383611bc9565b611ca960088383611bc9565b611cb560098383611bc9565b611cc1600a8383611bc9565b611ccd600b8383611bc9565b611cd9600c8383611bc9565b611ce5600d8383611bc9565b611cf1600e8383611bc9565b611cfd600f8383611bc9565b611c3760108383611bc9565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e00160405160208183030381529060405290506020820160208201612485565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611ebc8660011b67ffffffffffffffff1690565b18188584603f1c611ed78660011b67ffffffffffffffff1690565b18188584603f1c611ef28660011b67ffffffffffffffff1690565b181895508483603f1c611f0f8560011b67ffffffffffffffff1690565b181894508387603f1c611f2c8960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b6122ac81611dff565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611c37565b612491600082846122a3565b61249d600182846122a3565b6124a9600282846122a3565b6124b5600382846122a3565b6124c1600482846122a3565b6124cd600582846122a3565b6124d9600682846122a3565b6124e5600782846122a3565b6124f1600882846122a3565b6124fd600982846122a3565b612509600a82846122a3565b612515600b82846122a3565b612521600c82846122a3565b61252d600d82846122a3565b612539600e82846122a3565b612545600f82846122a3565b612551601082846122a3565b61255d601182846122a3565b612569601282846122a3565b612575601382846122a3565b612581601482846122a3565b61258d601582846122a3565b612599601682846122a3565b611c37601782846122a3565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83161761264b818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b606060405190508160208201818101828683376088830680801561269b5760888290038501848101848103803687375060806001820353506001845160001a17845386526126b2565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006126dd8260a01c63ffffffff1690565b67ffffffffffffffff16905060006126fb8360801c63ffffffff1690565b63ffffffff16905060006127158460401c63ffffffff1690565b63ffffffff16905060088310801561272b575080155b1561275f5760c082901b6000908152883560085283513382526016602090815260408084208a855290915290912055612814565b6008831015801561277d575080612777600885613319565b93508310155b8015612791575061278e878261316e565b83105b156128145760006127a28285613319565b9050876127b082602061316e565b101580156127bc575085155b156127f3576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b60006128a1565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff0061284f8360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff000061287c8360101b67ffffffffffffffff1690565b1617905060008160201c61289a8360201b67ffffffffffffffff1690565b1792915050565b608082015160208301906128b990612825565b612825565b60408201516128c790612825565b60401b176128df6128b460018460059190911b015190565b825160809190911b906128f190612825565b60c01b17179392505050565b826010810192821561292b579160200282015b8281111561292b578251825591602001919060010190612910565b50612937929150612953565b5090565b604051806020016040528061294e612968565b905290565b5b808211156129375760008155600101612954565b6040518061032001604052806019906020820280368337509192915050565b60006020828403121561299957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146129c457600080fd5b919050565b600080604083850312156129dc57600080fd5b6129e5836129a0565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff81118282101715612a4657612a466129f3565b60405290565b6040516060810167ffffffffffffffff81118282101715612a4657612a466129f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ab657612ab66129f3565b604052919050565b6000610320808385031215612ad257600080fd5b604051602080820167ffffffffffffffff8382108183111715612af757612af76129f3565b8160405283955087601f880112612b0d57600080fd5b612b15612a22565b9487019491508188861115612b2957600080fd5b875b86811015612b515780358381168114612b445760008081fd5b8452928401928401612b2b565b50909352509295945050505050565b600060608284031215612b7257600080fd5b50919050565b60008083601f840112612b8a57600080fd5b50813567ffffffffffffffff811115612ba257600080fd5b6020830191508360208260051b8501011115612bbd57600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612be357600080fd5b612bec8a6129a0565b985060208a01359750612c028b60408c01612abe565b96506103608a013567ffffffffffffffff80821115612c2057600080fd5b612c2c8d838e01612b60565b97506103808c0135915080821115612c4357600080fd5b612c4f8d838e01612b78565b90975095506103a08c0135915080821115612c6957600080fd5b612c758d838e01612b60565b94506103c08c0135915080821115612c8c57600080fd5b50612c998c828d01612b78565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612cc857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cfe57600080fd5b50508035926020909101359150565b60008083601f840112612d1f57600080fd5b50813567ffffffffffffffff811115612d3757600080fd5b602083019150836020828501011115612bbd57600080fd5b600080600080600080600060a0888a031215612d6a57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612d9057600080fd5b612d9c8b838c01612d0d565b909750955060608a0135915080821115612db557600080fd5b50612dc28a828b01612b78565b90945092505060808801358015158114612ddb57600080fd5b8091505092959891949750929550565b600080600060608486031215612e0057600080fd5b612e09846129a0565b95602085013595506040909401359392505050565b600080600060408486031215612e3357600080fd5b83359250602084013567ffffffffffffffff811115612e5157600080fd5b612e5d86828701612d0d565b9497909650939450505050565b600080600080600080600060a0888a031215612e8557600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612eab57600080fd5b612eb78b838c01612d0d565b909750955060608a0135915080821115612ed057600080fd5b50612edd8a828b01612d0d565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612f0e57600080fd5b612f17866129a0565b945060208601359350604086013567ffffffffffffffff80821115612f3b57600080fd5b612f4789838a01612b60565b94506060880135915080821115612f5d57600080fd5b50612f6a88828901612b78565b969995985093965092949392505050565b803563ffffffff811681146129c457600080fd5b600080600060608486031215612fa457600080fd5b83359250612fb460208501612f7b565b9150612fc260408501612f7b565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305a5761305a612ffa565b5060010190565b60006060823603121561307357600080fd5b61307b612a4c565b823567ffffffffffffffff8082111561309357600080fd5b9084019036601f8301126130a657600080fd5b81356020828211156130ba576130ba6129f3565b6130ea817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612a6f565b9250818352368183860101111561310057600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b601981101561316557825167ffffffffffffffff1682526020928301929091019060010161313c565b50505092915050565b6000821982111561318157613181612ffa565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131bb57600080fd5b83018035915067ffffffffffffffff8211156131d657600080fd5b602001915036819003821315612bbd57600080fd5b600181815b8085111561324457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561322a5761322a612ffa565b8085161561323757918102915b93841c93908002906131f0565b509250929050565b60008261325b57506001613307565b8161326857506000613307565b816001811461327e5760028114613288576132a4565b6001915050613307565b60ff84111561329957613299612ffa565b50506001821b613307565b5060208310610133831016604e8410600b84101617156132c7575081810a613307565b6132d183836131eb565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561330357613303612ffa565b0290505b92915050565b600061264b838361324c565b60008282101561332b5761332b612ffa565b500390565b600063ffffffff8381169083168181101561334d5761334d612ffa565b039392505050565b600063ffffffff80831681851680830382111561337457613374612ffa565b01949350505050565b6000845160005b8181101561339e5760208188018101518583015201613384565b818111156133ad576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a",
}
// AlphabetVMABI is the input ABI used to generate the binding from.
......
......@@ -42,8 +42,8 @@ type PreimageOracleLeaf struct {
// PreimageOracleMetaData contains all meta data concerning the PreimageOracle contract.
var PreimageOracleMetaData = &bind.MetaData{
ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_minProposalSize\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challengePeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"KECCAK_TREE_DEPTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_LEAF_COUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addLeavesLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_inputStartBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_stateCommitments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_finalize\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeFirstLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengePeriod\",\"inputs\":[],\"outputs\":[{\"name\":\"challengePeriod_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTreeRootLPP\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"treeRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_claimedSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadBlobPreimagePart\",\"inputs\":[{\"name\":\"_z\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_y\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_commitment\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadKeccak256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadLocalData\",\"inputs\":[{\"name\":\"_ident\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_localContext\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_word\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_size\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"key_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadSha256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minProposalSize\",\"inputs\":[],\"outputs\":[{\"name\":\"minProposalSize_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageLengths\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimagePartOk\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageParts\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocks\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocksLen\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"len_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBranches\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalCount\",\"inputs\":[],\"outputs\":[{\"name\":\"count_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalMetadata\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"LPPMetaData\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalParts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposals\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readPreimage\",\"inputs\":[{\"name\":\"_key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_offset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"dat_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"datLen_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"squeezeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zeroHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"ActiveProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BadProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInputSize\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPreimage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEOA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PartOffsetOOB\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostStateMatches\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StatesNotContiguous\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TreeSizeOverflow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongStartingBlock\",\"inputs\":[]}]",
Bin: "0x60c06040523480156200001157600080fd5b506040516200353f3803806200353f8339810160408190526200003491620000f3565b60a0829052608081905260005b6200004f600160106200012e565b811015620000ea57600381601081106200006d576200006d62000148565b01546003826010811062000085576200008562000148565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206003826001620000c091906200015e565b60108110620000d357620000d362000148565b015580620000e18162000179565b91505062000041565b50505062000195565b600080604083850312156200010757600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b60008282101562000143576200014362000118565b500390565b634e487b7160e01b600052603260045260246000fd5b6000821982111562000174576200017462000118565b500190565b6000600182016200018e576200018e62000118565b5060010190565b60805160a051613376620001c9600039600081816103f9015261192a01526000818161046d01526111d701526133766000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c136600461292d565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a61020536600461296f565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612b6a565b610641565b005b61020a61088f565b61020a61024b366004612c56565b6108aa565b61020a61025e366004612c91565b600160209081526000928352604080842090915290825290205481565b61020a61028936600461296f565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612cf5565b61097f565b61020a6102c736600461292d565b610e0d565b6102fa6102da366004612c91565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612d91565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612dc4565b610e7e565b61020a61035736600461296f565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612e10565b610f79565b61020a6103ac36600461296f565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612d91565b611130565b6102336103ea366004612b6a565b611162565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612c91565b61152d565b604080519283526020830191909152016101ee565b610233610453366004612dc4565b61161e565b610233610466366004612e9c565b611726565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612f35565b6118a0565b61020a6104b236600461292d565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac612f71565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3612f71565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181612fcf565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d613007565b611ab3565b611af3565b801561068e575061068e838383602088013561066b6106668a613007565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da91906130d6565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d9190613114565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc88610782868061312c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5492505050565b6107c588611caf565b8360400135886040516020016107db91906130d6565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d601060026132b3565b6108a791906132bf565b81565b60006108b6868661254b565b90506108c3836008613114565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b606081156109985761099186866125f8565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d8886612671565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a91906132b3565b610c9491906132bf565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a613114565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d93908460106128a3565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b600080603087600037602060006030600060025afa80610fa15763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa925082611023576309bde3396000526004601cfd5b602886106110395763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b6014602052826000526040600020602052816000526040600020816010811061115857600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff8116156111d5576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006112008260c01c90565b6112149067ffffffffffffffff16426132bf565b1161124b576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112578b8b610509565b905061127087878360208c013561066b6106668e613007565b801561128e575061128e848483602089013561066b6106668b613007565b6112c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016112da91906130d6565b6040516020818303038152906040528051906020012014611327576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84602001358860200135600161133d9190613114565b14158061136f575060016113578360601c63ffffffff1690565b61136191906132d6565b63ffffffff16856020013514155b156113a6576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113b88360801c63ffffffff1690565b63ffffffff169050806113d18460401c63ffffffff1690565b63ffffffff161461140e576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61141c8a610782888061312c565b6114258a611caf565b60006114308b6127c4565b905060006114448560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff166115b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b50600083815260208181526040909120546115d2816008613114565b6115dd856020613114565b106115fb57836115ee826008613114565b6115f891906132bf565b91505b506000938452600160209081526040808620948652939052919092205492909150565b60443560008060088301861061163c5763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b60006117328686610509565b905061174b838383602088013561066b6106668a613007565b611781576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840135156117bd576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c56128e1565b6117d381610782878061312c565b6117dc81611caf565b8460400135816040516020016117f291906130d6565b604051602081830303815290604052805190602001200361183f576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b3332146118d9576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e48160086132fb565b63ffffffff168263ffffffff1610611928576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161015611988576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611ad693929190613323565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611b47578060051b880135600186831c1660018114611b2c5760008481526020839052604090209350611b3d565b600082815260208590526040902093505b5050600101611af9565b5090931495945050505050565b6088815114611b6257600080fd5b6020810160208301611be3565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611bdd81611bc8868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611bef60008383611b6f565b611bfb60018383611b6f565b611c0760028383611b6f565b611c1360038383611b6f565b611c1f60048383611b6f565b611c2b60058383611b6f565b611c3760068383611b6f565b611c4360078383611b6f565b611c4f60088383611b6f565b611c5b60098383611b6f565b611c67600a8383611b6f565b611c73600b8383611b6f565b611c7f600c8383611b6f565b611c8b600d8383611b6f565b611c97600e8383611b6f565b611ca3600f8383611b6f565b611bdd60108383611b6f565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e0016040516020818303038152906040529050602082016020820161242b565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611e628660011b67ffffffffffffffff1690565b18188584603f1c611e7d8660011b67ffffffffffffffff1690565b18188584603f1c611e988660011b67ffffffffffffffff1690565b181895508483603f1c611eb58560011b67ffffffffffffffff1690565b181894508387603f1c611ed28960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b61225281611da5565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611bdd565b61243760008284612249565b61244360018284612249565b61244f60028284612249565b61245b60038284612249565b61246760048284612249565b61247360058284612249565b61247f60068284612249565b61248b60078284612249565b61249760088284612249565b6124a360098284612249565b6124af600a8284612249565b6124bb600b8284612249565b6124c7600c8284612249565b6124d3600d8284612249565b6124df600e8284612249565b6124eb600f8284612249565b6124f760108284612249565b61250360118284612249565b61250f60128284612249565b61251b60138284612249565b61252760148284612249565b61253360158284612249565b61253f60168284612249565b611bdd60178284612249565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316176125f1818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60606040519050816020820181810182868337608883068080156126415760888290038501848101848103803687375060806001820353506001845160001a1784538652612658565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006126838260a01c63ffffffff1690565b67ffffffffffffffff16905060006126a18360801c63ffffffff1690565b63ffffffff16905060006126bb8460401c63ffffffff1690565b63ffffffff1690506008831080156126d1575080155b156127055760c082901b6000908152883560085283513382526016602090815260408084208a8552909152909120556127ba565b6008831015801561272357508061271d6008856132bf565b93508310155b801561273757506127348782613114565b83105b156127ba57600061274882856132bf565b905087612756826020613114565b10158015612762575085155b15612799576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b6000612847565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff006127f58360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff00006128228360101b67ffffffffffffffff1690565b1617905060008160201c6128408360201b67ffffffffffffffff1690565b1792915050565b6080820151602083019061285f906127cb565b6127cb565b604082015161286d906127cb565b60401b1761288561285a60018460059190911b015190565b825160809190911b90612897906127cb565b60c01b17179392505050565b82601081019282156128d1579160200282015b828111156128d15782518255916020019190600101906128b6565b506128dd9291506128f9565b5090565b60405180602001604052806128f461290e565b905290565b5b808211156128dd57600081556001016128fa565b6040518061032001604052806019906020820280368337509192915050565b60006020828403121561293f57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461296a57600080fd5b919050565b6000806040838503121561298257600080fd5b61298b83612946565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff811182821017156129ec576129ec612999565b60405290565b6040516060810167ffffffffffffffff811182821017156129ec576129ec612999565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a5c57612a5c612999565b604052919050565b6000610320808385031215612a7857600080fd5b604051602080820167ffffffffffffffff8382108183111715612a9d57612a9d612999565b8160405283955087601f880112612ab357600080fd5b612abb6129c8565b9487019491508188861115612acf57600080fd5b875b86811015612af75780358381168114612aea5760008081fd5b8452928401928401612ad1565b50909352509295945050505050565b600060608284031215612b1857600080fd5b50919050565b60008083601f840112612b3057600080fd5b50813567ffffffffffffffff811115612b4857600080fd5b6020830191508360208260051b8501011115612b6357600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612b8957600080fd5b612b928a612946565b985060208a01359750612ba88b60408c01612a64565b96506103608a013567ffffffffffffffff80821115612bc657600080fd5b612bd28d838e01612b06565b97506103808c0135915080821115612be957600080fd5b612bf58d838e01612b1e565b90975095506103a08c0135915080821115612c0f57600080fd5b612c1b8d838e01612b06565b94506103c08c0135915080821115612c3257600080fd5b50612c3f8c828d01612b1e565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612c6e57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612ca457600080fd5b50508035926020909101359150565b60008083601f840112612cc557600080fd5b50813567ffffffffffffffff811115612cdd57600080fd5b602083019150836020828501011115612b6357600080fd5b600080600080600080600060a0888a031215612d1057600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612d3657600080fd5b612d428b838c01612cb3565b909750955060608a0135915080821115612d5b57600080fd5b50612d688a828b01612b1e565b90945092505060808801358015158114612d8157600080fd5b8091505092959891949750929550565b600080600060608486031215612da657600080fd5b612daf84612946565b95602085013595506040909401359392505050565b600080600060408486031215612dd957600080fd5b83359250602084013567ffffffffffffffff811115612df757600080fd5b612e0386828701612cb3565b9497909650939450505050565b600080600080600080600060a0888a031215612e2b57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612e5157600080fd5b612e5d8b838c01612cb3565b909750955060608a0135915080821115612e7657600080fd5b50612e838a828b01612cb3565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612eb457600080fd5b612ebd86612946565b945060208601359350604086013567ffffffffffffffff80821115612ee157600080fd5b612eed89838a01612b06565b94506060880135915080821115612f0357600080fd5b50612f1088828901612b1e565b969995985093965092949392505050565b803563ffffffff8116811461296a57600080fd5b600080600060608486031215612f4a57600080fd5b83359250612f5a60208501612f21565b9150612f6860408501612f21565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300057613000612fa0565b5060010190565b60006060823603121561301957600080fd5b6130216129f2565b823567ffffffffffffffff8082111561303957600080fd5b9084019036601f83011261304c57600080fd5b813560208282111561306057613060612999565b613090817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612a15565b925081835236818386010111156130a657600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b601981101561310b57825167ffffffffffffffff168252602092830192909101906001016130e2565b50505092915050565b6000821982111561312757613127612fa0565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261316157600080fd5b83018035915067ffffffffffffffff82111561317c57600080fd5b602001915036819003821315612b6357600080fd5b600181815b808511156131ea57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156131d0576131d0612fa0565b808516156131dd57918102915b93841c9390800290613196565b509250929050565b600082613201575060016132ad565b8161320e575060006132ad565b8160018114613224576002811461322e5761324a565b60019150506132ad565b60ff84111561323f5761323f612fa0565b50506001821b6132ad565b5060208310610133831016604e8410600b841016171561326d575081810a6132ad565b6132778383613191565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156132a9576132a9612fa0565b0290505b92915050565b60006125f183836131f2565b6000828210156132d1576132d1612fa0565b500390565b600063ffffffff838116908316818110156132f3576132f3612fa0565b039392505050565b600063ffffffff80831681851680830382111561331a5761331a612fa0565b01949350505050565b6000845160005b81811015613344576020818801810151858301520161332a565b81811115613353576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a",
ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_minProposalSize\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challengePeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_cancunActivation\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"KECCAK_TREE_DEPTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_LEAF_COUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addLeavesLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_inputStartBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_stateCommitments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_finalize\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeFirstLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengePeriod\",\"inputs\":[],\"outputs\":[{\"name\":\"challengePeriod_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTreeRootLPP\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"treeRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_claimedSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadBlobPreimagePart\",\"inputs\":[{\"name\":\"_z\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_y\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_commitment\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadKeccak256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadLocalData\",\"inputs\":[{\"name\":\"_ident\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_localContext\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_word\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_size\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"key_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadSha256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minProposalSize\",\"inputs\":[],\"outputs\":[{\"name\":\"minProposalSize_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageLengths\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimagePartOk\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageParts\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocks\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocksLen\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"len_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBranches\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalCount\",\"inputs\":[],\"outputs\":[{\"name\":\"count_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalMetadata\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"LPPMetaData\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalParts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposals\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readPreimage\",\"inputs\":[{\"name\":\"_key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_offset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"dat_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"datLen_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"squeezeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zeroHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"ActiveProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BadProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CancunNotActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInputSize\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPreimage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEOA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PartOffsetOOB\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostStateMatches\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StatesNotContiguous\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TreeSizeOverflow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongStartingBlock\",\"inputs\":[]}]",
Bin: "0x60e06040523480156200001157600080fd5b50604051620035b3380380620035b38339810160408190526200003491620000f9565b60c083905260a0829052608081905260005b62000054600160106200013e565b811015620000ef576003816010811062000072576200007262000158565b0154600382601081106200008a576200008a62000158565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206003826001620000c591906200016e565b60108110620000d857620000d862000158565b015580620000e68162000189565b91505062000046565b50505050620001a5565b6000806000606084860312156200010f57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b60008282101562000153576200015362000128565b500390565b634e487b7160e01b600052603260045260246000fd5b6000821982111562000184576200018462000128565b500190565b6000600182016200019e576200019e62000128565b5060010190565b60805160a05160c0516133d0620001e3600039600081816103f9015261198401526000818161046d015261123101526000610f7b01526133d06000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c1366004612987565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a6102053660046129c9565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612bc4565b610641565b005b61020a61088f565b61020a61024b366004612cb0565b6108aa565b61020a61025e366004612ceb565b600160209081526000928352604080842090915290825290205481565b61020a6102893660046129c9565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612d4f565b61097f565b61020a6102c7366004612987565b610e0d565b6102fa6102da366004612ceb565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612deb565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612e1e565b610e7e565b61020a6103573660046129c9565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612e6a565b610f79565b61020a6103ac3660046129c9565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612deb565b61118a565b6102336103ea366004612bc4565b6111bc565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612ceb565b611587565b604080519283526020830191909152016101ee565b610233610453366004612e1e565b611678565b610233610466366004612ef6565b611780565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612f8f565b6118fa565b61020a6104b2366004612987565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac612fcb565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3612fcb565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181613029565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d613061565b611b0d565b611b4d565b801561068e575061068e838383602088013561066b6106668a613061565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da9190613130565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d919061316e565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc886107828680613186565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bae92505050565b6107c588611d09565b8360400135886040516020016107db9190613130565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d6010600261330d565b6108a79190613319565b81565b60006108b686866125a5565b90506108c383600861316e565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b60608115610998576109918686612652565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d88866126cb565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a919061330d565b610c949190613319565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a61316e565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d93908460106128fd565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b7f0000000000000000000000000000000000000000000000000000000000000000421015610fd3576040517f299f254900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080603087600037602060006030600060025afa80610ffb5763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa92508261107d576309bde3396000526004601cfd5b602886106110935763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b601460205282600052604060002060205281600052604060002081601081106111b257600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff81161561122f576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061125a8260c01c90565b61126e9067ffffffffffffffff1642613319565b116112a5576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112b18b8b610509565b90506112ca87878360208c013561066b6106668e613061565b80156112e857506112e8848483602089013561066b6106668b613061565b61131e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016113349190613130565b6040516020818303038152906040528051906020012014611381576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846020013588602001356001611397919061316e565b1415806113c9575060016113b18360601c63ffffffff1690565b6113bb9190613330565b63ffffffff16856020013514155b15611400576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114128360801c63ffffffff1690565b63ffffffff1690508061142b8460401c63ffffffff1690565b63ffffffff1614611468576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114768a6107828880613186565b61147f8a611d09565b600061148a8b61281e565b9050600061149e8560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff16611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b506000838152602081815260409091205461162c81600861316e565b61163785602061316e565b10611655578361164882600861316e565b6116529190613319565b91505b506000938452600160209081526040808620948652939052919092205492909150565b6044356000806008830186106116965763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b600061178c8686610509565b90506117a5838383602088013561066b6106668a613061565b6117db576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084013515611817576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181f61293b565b61182d816107828780613186565b61183681611d09565b84604001358160405160200161184c9190613130565b6040516020818303038152906040528051906020012003611899576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b333214611933576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193e816008613355565b63ffffffff168263ffffffff1610611982576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff1610156119e2576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611b309392919061337d565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611ba1578060051b880135600186831c1660018114611b865760008481526020839052604090209350611b97565b600082815260208590526040902093505b5050600101611b53565b5090931495945050505050565b6088815114611bbc57600080fd5b6020810160208301611c3d565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611c3781611c22868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611c4960008383611bc9565b611c5560018383611bc9565b611c6160028383611bc9565b611c6d60038383611bc9565b611c7960048383611bc9565b611c8560058383611bc9565b611c9160068383611bc9565b611c9d60078383611bc9565b611ca960088383611bc9565b611cb560098383611bc9565b611cc1600a8383611bc9565b611ccd600b8383611bc9565b611cd9600c8383611bc9565b611ce5600d8383611bc9565b611cf1600e8383611bc9565b611cfd600f8383611bc9565b611c3760108383611bc9565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e00160405160208183030381529060405290506020820160208201612485565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611ebc8660011b67ffffffffffffffff1690565b18188584603f1c611ed78660011b67ffffffffffffffff1690565b18188584603f1c611ef28660011b67ffffffffffffffff1690565b181895508483603f1c611f0f8560011b67ffffffffffffffff1690565b181894508387603f1c611f2c8960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b6122ac81611dff565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611c37565b612491600082846122a3565b61249d600182846122a3565b6124a9600282846122a3565b6124b5600382846122a3565b6124c1600482846122a3565b6124cd600582846122a3565b6124d9600682846122a3565b6124e5600782846122a3565b6124f1600882846122a3565b6124fd600982846122a3565b612509600a82846122a3565b612515600b82846122a3565b612521600c82846122a3565b61252d600d82846122a3565b612539600e82846122a3565b612545600f82846122a3565b612551601082846122a3565b61255d601182846122a3565b612569601282846122a3565b612575601382846122a3565b612581601482846122a3565b61258d601582846122a3565b612599601682846122a3565b611c37601782846122a3565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83161761264b818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b606060405190508160208201818101828683376088830680801561269b5760888290038501848101848103803687375060806001820353506001845160001a17845386526126b2565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006126dd8260a01c63ffffffff1690565b67ffffffffffffffff16905060006126fb8360801c63ffffffff1690565b63ffffffff16905060006127158460401c63ffffffff1690565b63ffffffff16905060088310801561272b575080155b1561275f5760c082901b6000908152883560085283513382526016602090815260408084208a855290915290912055612814565b6008831015801561277d575080612777600885613319565b93508310155b8015612791575061278e878261316e565b83105b156128145760006127a28285613319565b9050876127b082602061316e565b101580156127bc575085155b156127f3576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b60006128a1565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff0061284f8360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff000061287c8360101b67ffffffffffffffff1690565b1617905060008160201c61289a8360201b67ffffffffffffffff1690565b1792915050565b608082015160208301906128b990612825565b612825565b60408201516128c790612825565b60401b176128df6128b460018460059190911b015190565b825160809190911b906128f190612825565b60c01b17179392505050565b826010810192821561292b579160200282015b8281111561292b578251825591602001919060010190612910565b50612937929150612953565b5090565b604051806020016040528061294e612968565b905290565b5b808211156129375760008155600101612954565b6040518061032001604052806019906020820280368337509192915050565b60006020828403121561299957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146129c457600080fd5b919050565b600080604083850312156129dc57600080fd5b6129e5836129a0565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff81118282101715612a4657612a466129f3565b60405290565b6040516060810167ffffffffffffffff81118282101715612a4657612a466129f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ab657612ab66129f3565b604052919050565b6000610320808385031215612ad257600080fd5b604051602080820167ffffffffffffffff8382108183111715612af757612af76129f3565b8160405283955087601f880112612b0d57600080fd5b612b15612a22565b9487019491508188861115612b2957600080fd5b875b86811015612b515780358381168114612b445760008081fd5b8452928401928401612b2b565b50909352509295945050505050565b600060608284031215612b7257600080fd5b50919050565b60008083601f840112612b8a57600080fd5b50813567ffffffffffffffff811115612ba257600080fd5b6020830191508360208260051b8501011115612bbd57600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612be357600080fd5b612bec8a6129a0565b985060208a01359750612c028b60408c01612abe565b96506103608a013567ffffffffffffffff80821115612c2057600080fd5b612c2c8d838e01612b60565b97506103808c0135915080821115612c4357600080fd5b612c4f8d838e01612b78565b90975095506103a08c0135915080821115612c6957600080fd5b612c758d838e01612b60565b94506103c08c0135915080821115612c8c57600080fd5b50612c998c828d01612b78565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612cc857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cfe57600080fd5b50508035926020909101359150565b60008083601f840112612d1f57600080fd5b50813567ffffffffffffffff811115612d3757600080fd5b602083019150836020828501011115612bbd57600080fd5b600080600080600080600060a0888a031215612d6a57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612d9057600080fd5b612d9c8b838c01612d0d565b909750955060608a0135915080821115612db557600080fd5b50612dc28a828b01612b78565b90945092505060808801358015158114612ddb57600080fd5b8091505092959891949750929550565b600080600060608486031215612e0057600080fd5b612e09846129a0565b95602085013595506040909401359392505050565b600080600060408486031215612e3357600080fd5b83359250602084013567ffffffffffffffff811115612e5157600080fd5b612e5d86828701612d0d565b9497909650939450505050565b600080600080600080600060a0888a031215612e8557600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612eab57600080fd5b612eb78b838c01612d0d565b909750955060608a0135915080821115612ed057600080fd5b50612edd8a828b01612d0d565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612f0e57600080fd5b612f17866129a0565b945060208601359350604086013567ffffffffffffffff80821115612f3b57600080fd5b612f4789838a01612b60565b94506060880135915080821115612f5d57600080fd5b50612f6a88828901612b78565b969995985093965092949392505050565b803563ffffffff811681146129c457600080fd5b600080600060608486031215612fa457600080fd5b83359250612fb460208501612f7b565b9150612fc260408501612f7b565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305a5761305a612ffa565b5060010190565b60006060823603121561307357600080fd5b61307b612a4c565b823567ffffffffffffffff8082111561309357600080fd5b9084019036601f8301126130a657600080fd5b81356020828211156130ba576130ba6129f3565b6130ea817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612a6f565b9250818352368183860101111561310057600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b601981101561316557825167ffffffffffffffff1682526020928301929091019060010161313c565b50505092915050565b6000821982111561318157613181612ffa565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131bb57600080fd5b83018035915067ffffffffffffffff8211156131d657600080fd5b602001915036819003821315612bbd57600080fd5b600181815b8085111561324457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561322a5761322a612ffa565b8085161561323757918102915b93841c93908002906131f0565b509250929050565b60008261325b57506001613307565b8161326857506000613307565b816001811461327e5760028114613288576132a4565b6001915050613307565b60ff84111561329957613299612ffa565b50506001821b613307565b5060208310610133831016604e8410600b84101617156132c7575081810a613307565b6132d183836131eb565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561330357613303612ffa565b0290505b92915050565b600061264b838361324c565b60008282101561332b5761332b612ffa565b500390565b600063ffffffff8381169083168181101561334d5761334d612ffa565b039392505050565b600063ffffffff80831681851680830382111561337457613374612ffa565b01949350505050565b6000845160005b8181101561339e5760208188018101518583015201613384565b818111156133ad576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a",
}
// PreimageOracleABI is the input ABI used to generate the binding from.
......@@ -55,7 +55,7 @@ var PreimageOracleABI = PreimageOracleMetaData.ABI
var PreimageOracleBin = PreimageOracleMetaData.Bin
// DeployPreimageOracle deploys a new Ethereum contract, binding an instance of PreimageOracle to it.
func DeployPreimageOracle(auth *bind.TransactOpts, backend bind.ContractBackend, _minProposalSize *big.Int, _challengePeriod *big.Int) (common.Address, *types.Transaction, *PreimageOracle, error) {
func DeployPreimageOracle(auth *bind.TransactOpts, backend bind.ContractBackend, _minProposalSize *big.Int, _challengePeriod *big.Int, _cancunActivation *big.Int) (common.Address, *types.Transaction, *PreimageOracle, error) {
parsed, err := PreimageOracleMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
......@@ -64,7 +64,7 @@ func DeployPreimageOracle(auth *bind.TransactOpts, backend bind.ContractBackend,
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PreimageOracleBin), backend, _minProposalSize, _challengePeriod)
address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PreimageOracleBin), backend, _minProposalSize, _challengePeriod, _cancunActivation)
if err != nil {
return common.Address{}, nil, nil, err
}
......
......@@ -13,7 +13,7 @@ const PreimageOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contrac
var PreimageOracleStorageLayout = new(solc.StorageLayout)
var PreimageOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c136600461292d565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a61020536600461296f565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612b6a565b610641565b005b61020a61088f565b61020a61024b366004612c56565b6108aa565b61020a61025e366004612c91565b600160209081526000928352604080842090915290825290205481565b61020a61028936600461296f565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612cf5565b61097f565b61020a6102c736600461292d565b610e0d565b6102fa6102da366004612c91565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612d91565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612dc4565b610e7e565b61020a61035736600461296f565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612e10565b610f79565b61020a6103ac36600461296f565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612d91565b611130565b6102336103ea366004612b6a565b611162565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612c91565b61152d565b604080519283526020830191909152016101ee565b610233610453366004612dc4565b61161e565b610233610466366004612e9c565b611726565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612f35565b6118a0565b61020a6104b236600461292d565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac612f71565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3612f71565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181612fcf565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d613007565b611ab3565b611af3565b801561068e575061068e838383602088013561066b6106668a613007565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da91906130d6565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d9190613114565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc88610782868061312c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5492505050565b6107c588611caf565b8360400135886040516020016107db91906130d6565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d601060026132b3565b6108a791906132bf565b81565b60006108b6868661254b565b90506108c3836008613114565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b606081156109985761099186866125f8565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d8886612671565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a91906132b3565b610c9491906132bf565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a613114565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d93908460106128a3565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b600080603087600037602060006030600060025afa80610fa15763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa925082611023576309bde3396000526004601cfd5b602886106110395763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b6014602052826000526040600020602052816000526040600020816010811061115857600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff8116156111d5576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006112008260c01c90565b6112149067ffffffffffffffff16426132bf565b1161124b576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112578b8b610509565b905061127087878360208c013561066b6106668e613007565b801561128e575061128e848483602089013561066b6106668b613007565b6112c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016112da91906130d6565b6040516020818303038152906040528051906020012014611327576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84602001358860200135600161133d9190613114565b14158061136f575060016113578360601c63ffffffff1690565b61136191906132d6565b63ffffffff16856020013514155b156113a6576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113b88360801c63ffffffff1690565b63ffffffff169050806113d18460401c63ffffffff1690565b63ffffffff161461140e576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61141c8a610782888061312c565b6114258a611caf565b60006114308b6127c4565b905060006114448560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff166115b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b50600083815260208181526040909120546115d2816008613114565b6115dd856020613114565b106115fb57836115ee826008613114565b6115f891906132bf565b91505b506000938452600160209081526040808620948652939052919092205492909150565b60443560008060088301861061163c5763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b60006117328686610509565b905061174b838383602088013561066b6106668a613007565b611781576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840135156117bd576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c56128e1565b6117d381610782878061312c565b6117dc81611caf565b8460400135816040516020016117f291906130d6565b604051602081830303815290604052805190602001200361183f576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b3332146118d9576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e48160086132fb565b63ffffffff168263ffffffff1610611928576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161015611988576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611ad693929190613323565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611b47578060051b880135600186831c1660018114611b2c5760008481526020839052604090209350611b3d565b600082815260208590526040902093505b5050600101611af9565b5090931495945050505050565b6088815114611b6257600080fd5b6020810160208301611be3565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611bdd81611bc8868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611bef60008383611b6f565b611bfb60018383611b6f565b611c0760028383611b6f565b611c1360038383611b6f565b611c1f60048383611b6f565b611c2b60058383611b6f565b611c3760068383611b6f565b611c4360078383611b6f565b611c4f60088383611b6f565b611c5b60098383611b6f565b611c67600a8383611b6f565b611c73600b8383611b6f565b611c7f600c8383611b6f565b611c8b600d8383611b6f565b611c97600e8383611b6f565b611ca3600f8383611b6f565b611bdd60108383611b6f565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e0016040516020818303038152906040529050602082016020820161242b565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611e628660011b67ffffffffffffffff1690565b18188584603f1c611e7d8660011b67ffffffffffffffff1690565b18188584603f1c611e988660011b67ffffffffffffffff1690565b181895508483603f1c611eb58560011b67ffffffffffffffff1690565b181894508387603f1c611ed28960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b61225281611da5565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611bdd565b61243760008284612249565b61244360018284612249565b61244f60028284612249565b61245b60038284612249565b61246760048284612249565b61247360058284612249565b61247f60068284612249565b61248b60078284612249565b61249760088284612249565b6124a360098284612249565b6124af600a8284612249565b6124bb600b8284612249565b6124c7600c8284612249565b6124d3600d8284612249565b6124df600e8284612249565b6124eb600f8284612249565b6124f760108284612249565b61250360118284612249565b61250f60128284612249565b61251b60138284612249565b61252760148284612249565b61253360158284612249565b61253f60168284612249565b611bdd60178284612249565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316176125f1818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60606040519050816020820181810182868337608883068080156126415760888290038501848101848103803687375060806001820353506001845160001a1784538652612658565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006126838260a01c63ffffffff1690565b67ffffffffffffffff16905060006126a18360801c63ffffffff1690565b63ffffffff16905060006126bb8460401c63ffffffff1690565b63ffffffff1690506008831080156126d1575080155b156127055760c082901b6000908152883560085283513382526016602090815260408084208a8552909152909120556127ba565b6008831015801561272357508061271d6008856132bf565b93508310155b801561273757506127348782613114565b83105b156127ba57600061274882856132bf565b905087612756826020613114565b10158015612762575085155b15612799576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b6000612847565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff006127f58360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff00006128228360101b67ffffffffffffffff1690565b1617905060008160201c6128408360201b67ffffffffffffffff1690565b1792915050565b6080820151602083019061285f906127cb565b6127cb565b604082015161286d906127cb565b60401b1761288561285a60018460059190911b015190565b825160809190911b90612897906127cb565b60c01b17179392505050565b82601081019282156128d1579160200282015b828111156128d15782518255916020019190600101906128b6565b506128dd9291506128f9565b5090565b60405180602001604052806128f461290e565b905290565b5b808211156128dd57600081556001016128fa565b6040518061032001604052806019906020820280368337509192915050565b60006020828403121561293f57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461296a57600080fd5b919050565b6000806040838503121561298257600080fd5b61298b83612946565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff811182821017156129ec576129ec612999565b60405290565b6040516060810167ffffffffffffffff811182821017156129ec576129ec612999565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a5c57612a5c612999565b604052919050565b6000610320808385031215612a7857600080fd5b604051602080820167ffffffffffffffff8382108183111715612a9d57612a9d612999565b8160405283955087601f880112612ab357600080fd5b612abb6129c8565b9487019491508188861115612acf57600080fd5b875b86811015612af75780358381168114612aea5760008081fd5b8452928401928401612ad1565b50909352509295945050505050565b600060608284031215612b1857600080fd5b50919050565b60008083601f840112612b3057600080fd5b50813567ffffffffffffffff811115612b4857600080fd5b6020830191508360208260051b8501011115612b6357600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612b8957600080fd5b612b928a612946565b985060208a01359750612ba88b60408c01612a64565b96506103608a013567ffffffffffffffff80821115612bc657600080fd5b612bd28d838e01612b06565b97506103808c0135915080821115612be957600080fd5b612bf58d838e01612b1e565b90975095506103a08c0135915080821115612c0f57600080fd5b612c1b8d838e01612b06565b94506103c08c0135915080821115612c3257600080fd5b50612c3f8c828d01612b1e565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612c6e57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612ca457600080fd5b50508035926020909101359150565b60008083601f840112612cc557600080fd5b50813567ffffffffffffffff811115612cdd57600080fd5b602083019150836020828501011115612b6357600080fd5b600080600080600080600060a0888a031215612d1057600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612d3657600080fd5b612d428b838c01612cb3565b909750955060608a0135915080821115612d5b57600080fd5b50612d688a828b01612b1e565b90945092505060808801358015158114612d8157600080fd5b8091505092959891949750929550565b600080600060608486031215612da657600080fd5b612daf84612946565b95602085013595506040909401359392505050565b600080600060408486031215612dd957600080fd5b83359250602084013567ffffffffffffffff811115612df757600080fd5b612e0386828701612cb3565b9497909650939450505050565b600080600080600080600060a0888a031215612e2b57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612e5157600080fd5b612e5d8b838c01612cb3565b909750955060608a0135915080821115612e7657600080fd5b50612e838a828b01612cb3565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612eb457600080fd5b612ebd86612946565b945060208601359350604086013567ffffffffffffffff80821115612ee157600080fd5b612eed89838a01612b06565b94506060880135915080821115612f0357600080fd5b50612f1088828901612b1e565b969995985093965092949392505050565b803563ffffffff8116811461296a57600080fd5b600080600060608486031215612f4a57600080fd5b83359250612f5a60208501612f21565b9150612f6860408501612f21565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300057613000612fa0565b5060010190565b60006060823603121561301957600080fd5b6130216129f2565b823567ffffffffffffffff8082111561303957600080fd5b9084019036601f83011261304c57600080fd5b813560208282111561306057613060612999565b613090817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612a15565b925081835236818386010111156130a657600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b601981101561310b57825167ffffffffffffffff168252602092830192909101906001016130e2565b50505092915050565b6000821982111561312757613127612fa0565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261316157600080fd5b83018035915067ffffffffffffffff82111561317c57600080fd5b602001915036819003821315612b6357600080fd5b600181815b808511156131ea57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156131d0576131d0612fa0565b808516156131dd57918102915b93841c9390800290613196565b509250929050565b600082613201575060016132ad565b8161320e575060006132ad565b8160018114613224576002811461322e5761324a565b60019150506132ad565b60ff84111561323f5761323f612fa0565b50506001821b6132ad565b5060208310610133831016604e8410600b841016171561326d575081810a6132ad565b6132778383613191565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156132a9576132a9612fa0565b0290505b92915050565b60006125f183836131f2565b6000828210156132d1576132d1612fa0565b500390565b600063ffffffff838116908316818110156132f3576132f3612fa0565b039392505050565b600063ffffffff80831681851680830382111561331a5761331a612fa0565b01949350505050565b6000845160005b81811015613344576020818801810151858301520161332a565b81811115613353576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a"
var PreimageOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c1366004612987565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a6102053660046129c9565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612bc4565b610641565b005b61020a61088f565b61020a61024b366004612cb0565b6108aa565b61020a61025e366004612ceb565b600160209081526000928352604080842090915290825290205481565b61020a6102893660046129c9565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612d4f565b61097f565b61020a6102c7366004612987565b610e0d565b6102fa6102da366004612ceb565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612deb565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612e1e565b610e7e565b61020a6103573660046129c9565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612e6a565b610f79565b61020a6103ac3660046129c9565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612deb565b61118a565b6102336103ea366004612bc4565b6111bc565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612ceb565b611587565b604080519283526020830191909152016101ee565b610233610453366004612e1e565b611678565b610233610466366004612ef6565b611780565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612f8f565b6118fa565b61020a6104b2366004612987565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac612fcb565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3612fcb565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181613029565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d613061565b611b0d565b611b4d565b801561068e575061068e838383602088013561066b6106668a613061565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da9190613130565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d919061316e565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc886107828680613186565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bae92505050565b6107c588611d09565b8360400135886040516020016107db9190613130565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d6010600261330d565b6108a79190613319565b81565b60006108b686866125a5565b90506108c383600861316e565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b60608115610998576109918686612652565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d88866126cb565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a919061330d565b610c949190613319565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a61316e565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d93908460106128fd565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b7f0000000000000000000000000000000000000000000000000000000000000000421015610fd3576040517f299f254900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080603087600037602060006030600060025afa80610ffb5763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa92508261107d576309bde3396000526004601cfd5b602886106110935763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b601460205282600052604060002060205281600052604060002081601081106111b257600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff81161561122f576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061125a8260c01c90565b61126e9067ffffffffffffffff1642613319565b116112a5576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112b18b8b610509565b90506112ca87878360208c013561066b6106668e613061565b80156112e857506112e8848483602089013561066b6106668b613061565b61131e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016113349190613130565b6040516020818303038152906040528051906020012014611381576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846020013588602001356001611397919061316e565b1415806113c9575060016113b18360601c63ffffffff1690565b6113bb9190613330565b63ffffffff16856020013514155b15611400576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114128360801c63ffffffff1690565b63ffffffff1690508061142b8460401c63ffffffff1690565b63ffffffff1614611468576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114768a6107828880613186565b61147f8a611d09565b600061148a8b61281e565b9050600061149e8560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff16611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b506000838152602081815260409091205461162c81600861316e565b61163785602061316e565b10611655578361164882600861316e565b6116529190613319565b91505b506000938452600160209081526040808620948652939052919092205492909150565b6044356000806008830186106116965763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b600061178c8686610509565b90506117a5838383602088013561066b6106668a613061565b6117db576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084013515611817576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181f61293b565b61182d816107828780613186565b61183681611d09565b84604001358160405160200161184c9190613130565b6040516020818303038152906040528051906020012003611899576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b333214611933576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193e816008613355565b63ffffffff168263ffffffff1610611982576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff1610156119e2576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611b309392919061337d565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611ba1578060051b880135600186831c1660018114611b865760008481526020839052604090209350611b97565b600082815260208590526040902093505b5050600101611b53565b5090931495945050505050565b6088815114611bbc57600080fd5b6020810160208301611c3d565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611c3781611c22868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611c4960008383611bc9565b611c5560018383611bc9565b611c6160028383611bc9565b611c6d60038383611bc9565b611c7960048383611bc9565b611c8560058383611bc9565b611c9160068383611bc9565b611c9d60078383611bc9565b611ca960088383611bc9565b611cb560098383611bc9565b611cc1600a8383611bc9565b611ccd600b8383611bc9565b611cd9600c8383611bc9565b611ce5600d8383611bc9565b611cf1600e8383611bc9565b611cfd600f8383611bc9565b611c3760108383611bc9565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e00160405160208183030381529060405290506020820160208201612485565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611ebc8660011b67ffffffffffffffff1690565b18188584603f1c611ed78660011b67ffffffffffffffff1690565b18188584603f1c611ef28660011b67ffffffffffffffff1690565b181895508483603f1c611f0f8560011b67ffffffffffffffff1690565b181894508387603f1c611f2c8960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b6122ac81611dff565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611c37565b612491600082846122a3565b61249d600182846122a3565b6124a9600282846122a3565b6124b5600382846122a3565b6124c1600482846122a3565b6124cd600582846122a3565b6124d9600682846122a3565b6124e5600782846122a3565b6124f1600882846122a3565b6124fd600982846122a3565b612509600a82846122a3565b612515600b82846122a3565b612521600c82846122a3565b61252d600d82846122a3565b612539600e82846122a3565b612545600f82846122a3565b612551601082846122a3565b61255d601182846122a3565b612569601282846122a3565b612575601382846122a3565b612581601482846122a3565b61258d601582846122a3565b612599601682846122a3565b611c37601782846122a3565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83161761264b818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b606060405190508160208201818101828683376088830680801561269b5760888290038501848101848103803687375060806001820353506001845160001a17845386526126b2565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006126dd8260a01c63ffffffff1690565b67ffffffffffffffff16905060006126fb8360801c63ffffffff1690565b63ffffffff16905060006127158460401c63ffffffff1690565b63ffffffff16905060088310801561272b575080155b1561275f5760c082901b6000908152883560085283513382526016602090815260408084208a855290915290912055612814565b6008831015801561277d575080612777600885613319565b93508310155b8015612791575061278e878261316e565b83105b156128145760006127a28285613319565b9050876127b082602061316e565b101580156127bc575085155b156127f3576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b60006128a1565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff0061284f8360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff000061287c8360101b67ffffffffffffffff1690565b1617905060008160201c61289a8360201b67ffffffffffffffff1690565b1792915050565b608082015160208301906128b990612825565b612825565b60408201516128c790612825565b60401b176128df6128b460018460059190911b015190565b825160809190911b906128f190612825565b60c01b17179392505050565b826010810192821561292b579160200282015b8281111561292b578251825591602001919060010190612910565b50612937929150612953565b5090565b604051806020016040528061294e612968565b905290565b5b808211156129375760008155600101612954565b6040518061032001604052806019906020820280368337509192915050565b60006020828403121561299957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146129c457600080fd5b919050565b600080604083850312156129dc57600080fd5b6129e5836129a0565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff81118282101715612a4657612a466129f3565b60405290565b6040516060810167ffffffffffffffff81118282101715612a4657612a466129f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ab657612ab66129f3565b604052919050565b6000610320808385031215612ad257600080fd5b604051602080820167ffffffffffffffff8382108183111715612af757612af76129f3565b8160405283955087601f880112612b0d57600080fd5b612b15612a22565b9487019491508188861115612b2957600080fd5b875b86811015612b515780358381168114612b445760008081fd5b8452928401928401612b2b565b50909352509295945050505050565b600060608284031215612b7257600080fd5b50919050565b60008083601f840112612b8a57600080fd5b50813567ffffffffffffffff811115612ba257600080fd5b6020830191508360208260051b8501011115612bbd57600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612be357600080fd5b612bec8a6129a0565b985060208a01359750612c028b60408c01612abe565b96506103608a013567ffffffffffffffff80821115612c2057600080fd5b612c2c8d838e01612b60565b97506103808c0135915080821115612c4357600080fd5b612c4f8d838e01612b78565b90975095506103a08c0135915080821115612c6957600080fd5b612c758d838e01612b60565b94506103c08c0135915080821115612c8c57600080fd5b50612c998c828d01612b78565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612cc857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cfe57600080fd5b50508035926020909101359150565b60008083601f840112612d1f57600080fd5b50813567ffffffffffffffff811115612d3757600080fd5b602083019150836020828501011115612bbd57600080fd5b600080600080600080600060a0888a031215612d6a57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612d9057600080fd5b612d9c8b838c01612d0d565b909750955060608a0135915080821115612db557600080fd5b50612dc28a828b01612b78565b90945092505060808801358015158114612ddb57600080fd5b8091505092959891949750929550565b600080600060608486031215612e0057600080fd5b612e09846129a0565b95602085013595506040909401359392505050565b600080600060408486031215612e3357600080fd5b83359250602084013567ffffffffffffffff811115612e5157600080fd5b612e5d86828701612d0d565b9497909650939450505050565b600080600080600080600060a0888a031215612e8557600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612eab57600080fd5b612eb78b838c01612d0d565b909750955060608a0135915080821115612ed057600080fd5b50612edd8a828b01612d0d565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612f0e57600080fd5b612f17866129a0565b945060208601359350604086013567ffffffffffffffff80821115612f3b57600080fd5b612f4789838a01612b60565b94506060880135915080821115612f5d57600080fd5b50612f6a88828901612b78565b969995985093965092949392505050565b803563ffffffff811681146129c457600080fd5b600080600060608486031215612fa457600080fd5b83359250612fb460208501612f7b565b9150612fc260408501612f7b565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305a5761305a612ffa565b5060010190565b60006060823603121561307357600080fd5b61307b612a4c565b823567ffffffffffffffff8082111561309357600080fd5b9084019036601f8301126130a657600080fd5b81356020828211156130ba576130ba6129f3565b6130ea817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612a6f565b9250818352368183860101111561310057600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b601981101561316557825167ffffffffffffffff1682526020928301929091019060010161313c565b50505092915050565b6000821982111561318157613181612ffa565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131bb57600080fd5b83018035915067ffffffffffffffff8211156131d657600080fd5b602001915036819003821315612bbd57600080fd5b600181815b8085111561324457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561322a5761322a612ffa565b8085161561323757918102915b93841c93908002906131f0565b509250929050565b60008261325b57506001613307565b8161326857506000613307565b816001811461327e5760028114613288576132a4565b6001915050613307565b60ff84111561329957613299612ffa565b50506001821b613307565b5060208310610133831016604e8410600b84101617156132c7575081810a613307565b6132d183836131eb565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561330357613303612ffa565b0290505b92915050565b600061264b838361324c565b60008282101561332b5761332b612ffa565b500390565b600063ffffffff8381169083168181101561334d5761334d612ffa565b039392505050565b600063ffffffff80831681851680830382111561337457613374612ffa565b01949350505050565b6000845160005b8181101561339e5760208188018101518583015201613384565b818111156133ad576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a"
func init() {
......
......@@ -222,6 +222,8 @@ type DeployConfig struct {
PreimageOracleMinProposalSize uint64 `json:"preimageOracleMinProposalSize"`
// PreimageOracleChallengePeriod is the number of seconds that challengers have to challenge a large preimage proposal.
PreimageOracleChallengePeriod uint64 `json:"preimageOracleChallengePeriod"`
// PreimageOracleCancunActivationTimestamp is the timestamp at which blob preimages are able to be loaded into the preimage oracle.
PreimageOracleCancunActivationTimestamp uint64 `json:"preimageOracleCancunActivationTimestamp"`
// FundDevAccounts configures whether or not to fund the dev accounts. Should only be used
// during devnet deployments.
FundDevAccounts bool `json:"fundDevAccounts"`
......
......@@ -73,6 +73,7 @@
"faultGameSplitDepth": 0,
"preimageOracleMinProposalSize": 1800000,
"preimageOracleChallengePeriod": 86400,
"preimageOracleCancunActivationTimestamp": 0,
"systemConfigStartBlock": 0,
"requiredProtocolVersion": "0x0000000000000000000000000000000000000000000000000000000000000000",
"recommendedProtocolVersion": "0x0000000000000000000000000000000000000000000000000000000000000000"
......
......@@ -56,5 +56,6 @@
"faultGameGenesisOutputRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
"faultGameSplitDepth": 14,
"preimageOracleMinProposalSize": 18000,
"preimageOracleChallengePeriod": 86400
"preimageOracleChallengePeriod": 86400,
"preimageOracleCancunActivationTimestamp": 0
}
......@@ -49,5 +49,6 @@
"faultGameGenesisOutputRoot": "0x6a2fb9128c8bc82eed49ee590fba3e975bd67fede20535d0d20b3000ea6d99b1",
"faultGameSplitDepth": 32,
"preimageOracleMinProposalSize": 1800000,
"preimageOracleChallengePeriod": 86400
"preimageOracleChallengePeriod": 86400,
"preimageOracleCancunActivationTimestamp": 1706655072
}
......@@ -616,7 +616,8 @@ contract Deploy is Deployer {
console.log("Deploying PreimageOracle implementation");
PreimageOracle preimageOracle = new PreimageOracle{ salt: _implSalt() }({
_minProposalSize: cfg.preimageOracleMinProposalSize(),
_challengePeriod: cfg.preimageOracleChallengePeriod()
_challengePeriod: cfg.preimageOracleChallengePeriod(),
_cancunActivation: cfg.preimageOracleCancunActivationTimestamp()
});
save("PreimageOracle", address(preimageOracle));
console.log("PreimageOracle deployed at %s", address(preimageOracle));
......
......@@ -55,6 +55,7 @@ contract DeployConfig is Script {
uint256 public faultGameMaxDuration;
uint256 public preimageOracleMinProposalSize;
uint256 public preimageOracleChallengePeriod;
uint256 public preimageOracleCancunActivationTimestamp;
uint256 public systemConfigStartBlock;
uint256 public requiredProtocolVersion;
uint256 public recommendedProtocolVersion;
......@@ -118,6 +119,8 @@ contract DeployConfig is Script {
preimageOracleMinProposalSize = stdJson.readUint(_json, "$.preimageOracleMinProposalSize");
preimageOracleChallengePeriod = stdJson.readUint(_json, "$.preimageOracleChallengePeriod");
preimageOracleCancunActivationTimestamp =
stdJson.readUint(_json, "$.preimageOracleCancunActivationTimestamp");
}
}
......
......@@ -6,10 +6,10 @@
# invalid JSON file when not filled in, which is annoying.
reqenv() {
if [ -z "${!1}" ]; then
echo "Error: environment variable '$1' is undefined"
exit 1
fi
if [ -z "${!1}" ]; then
echo "Error: environment variable '$1' is undefined"
exit 1
fi
}
# Check required environment variables
......@@ -97,7 +97,8 @@ config=$(cat << EOL
"faultGameSplitDepth": 14,
"preimageOracleMinProposalSize": 1800000,
"preimageOracleChallengePeriod": 86400
"preimageOracleChallengePeriod": 86400,
"preimageOracleCancunActivationTimestamp": 0
}
EOL
)
......
......@@ -1144,10 +1144,10 @@
"impact": "Medium",
"confidence": "Medium",
"check": "uninitialized-local",
"description": "PreimageOracle.challengeFirstLPP(address,uint256,PreimageOracle.Leaf,bytes32[]).stateMatrix (src/cannon/PreimageOracle.sol#534) is a local variable never initialized\n",
"description": "PreimageOracle.challengeFirstLPP(address,uint256,PreimageOracle.Leaf,bytes32[]).stateMatrix (src/cannon/PreimageOracle.sol#541) is a local variable never initialized\n",
"type": "variable",
"name": "stateMatrix",
"start": 25088,
"start": 25480,
"length": 40,
"filename_relative": "src/cannon/PreimageOracle.sol"
},
......
......@@ -10,6 +10,11 @@
"internalType": "uint256",
"name": "_challengePeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_cancunActivation",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
......@@ -765,6 +770,11 @@
"name": "BadProposal",
"type": "error"
},
{
"inputs": [],
"name": "CancunNotActive",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInputSize",
......
......@@ -1954,7 +1954,7 @@
"newValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"previousValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"reverted": false,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000037"
"slot": "0x0000000000000000000000000000000000000000000000000000000000000038"
}
],
"value": 0
......@@ -1980,7 +1980,7 @@
"newValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"previousValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"reverted": false,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000038"
"slot": "0x0000000000000000000000000000000000000000000000000000000000000039"
}
],
"value": 0
......@@ -2441,7 +2441,7 @@
"newValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"previousValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"reverted": false,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000037"
"slot": "0x0000000000000000000000000000000000000000000000000000000000000038"
}
],
"value": 0
......@@ -2519,7 +2519,7 @@
"newValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"previousValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"reverted": false,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000038"
"slot": "0x0000000000000000000000000000000000000000000000000000000000000039"
}
],
"value": 0
......@@ -7162,7 +7162,7 @@
"newValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"previousValue": "0x0000000000000000000000000000000000000000000000000000000000000000",
"reverted": false,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000036"
"slot": "0x0000000000000000000000000000000000000000000000000000000000000037"
}
],
"value": 0
......
......@@ -16,6 +16,9 @@ contract PreimageOracle is IPreimageOracle {
// Constants & Immutables //
////////////////////////////////////////////////////////////////
/// @notice The timestamp of Cancun activation on the current chain.
/// @custom:network-specific
uint256 internal immutable CANCUN_ACTIVATION;
/// @notice The duration of the large preimage proposal challenge period.
uint256 internal immutable CHALLENGE_PERIOD;
/// @notice The minimum size of a preimage that can be proposed in the large preimage path.
......@@ -77,9 +80,10 @@ contract PreimageOracle is IPreimageOracle {
// Constructor //
////////////////////////////////////////////////////////////////
constructor(uint256 _minProposalSize, uint256 _challengePeriod) {
constructor(uint256 _minProposalSize, uint256 _challengePeriod, uint256 _cancunActivation) {
MIN_LPP_SIZE_BYTES = _minProposalSize;
CHALLENGE_PERIOD = _challengePeriod;
CANCUN_ACTIVATION = _cancunActivation;
// Compute hashes in empty sparse Merkle tree. The first hash is not set, and kept as zero as the identity.
for (uint256 height = 0; height < KECCAK_TREE_DEPTH - 1; height++) {
......@@ -241,6 +245,9 @@ contract PreimageOracle is IPreimageOracle {
)
external
{
// Prior to Cancun activation, the blob preimage precompile is not available.
if (block.timestamp < CANCUN_ACTIVATION) revert CancunNotActive();
bytes32 key;
bytes32 part;
assembly {
......
......@@ -39,3 +39,6 @@ error NotInitialized();
/// @notice Thrown when the caller of a function is not an EOA.
error NotEOA();
/// @notice Thrown when a function that requires Cancun EVM features is called on at a time where Cancun is not enabled.
error CancunNotActive();
......@@ -12,7 +12,7 @@ contract MIPS_Test is CommonTest {
function setUp() public virtual override {
super.setUp();
oracle = new PreimageOracle(0, 0);
oracle = new PreimageOracle(0, 0, 0);
mips = new MIPS(oracle);
vm.store(address(mips), 0x0, bytes32(abi.encode(address(oracle))));
vm.label(address(oracle), "PreimageOracle");
......
......@@ -15,7 +15,7 @@ contract PreimageOracle_Test is Test {
/// @notice Sets up the testing suite.
function setUp() public {
oracle = new PreimageOracle(0, 0);
oracle = new PreimageOracle(0, 0, 0);
vm.label(address(oracle), "PreimageOracle");
}
......@@ -182,7 +182,11 @@ contract PreimageOracle_LargePreimageProposals_Test is Test {
/// @notice Sets up the testing suite.
function setUp() public {
oracle = new PreimageOracle({ _minProposalSize: MIN_SIZE_BYTES, _challengePeriod: CHALLENGE_PERIOD });
oracle = new PreimageOracle({
_minProposalSize: MIN_SIZE_BYTES,
_challengePeriod: CHALLENGE_PERIOD,
_cancunActivation: 0
});
vm.label(address(oracle), "PreimageOracle");
// Set `tx.origin` and `msg.sender` to `address(this)` so that it may behave like an EOA for `addLeavesLPP`.
......@@ -204,7 +208,8 @@ contract PreimageOracle_LargePreimageProposals_Test is Test {
/// @notice Tests that the `initLPP` function reverts when the part offset is out of bounds of the full preimage.
function test_initLPP_sizeTooSmall_reverts() public {
oracle = new PreimageOracle({ _minProposalSize: 1000, _challengePeriod: CHALLENGE_PERIOD });
oracle =
new PreimageOracle({ _minProposalSize: 1000, _challengePeriod: CHALLENGE_PERIOD, _cancunActivation: 0 });
// Allocate the preimage data.
bytes memory data = new bytes(136);
......
......@@ -14,7 +14,7 @@ contract AlphabetVM is IBigStepper {
constructor(Claim _absolutePrestate) {
ABSOLUTE_PRESTATE = _absolutePrestate;
oracle = new PreimageOracle(0, 0);
oracle = new PreimageOracle(0, 0, 0);
}
/// @inheritdoc IBigStepper
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment