0 txs
13 calls
constructor
No constructor.
functions
marshal
purefunction marshal(tuple clientState) pure returns (bytes)
marshal
purefunction marshal(tuple message) pure returns (bytes)
marshal
purefunction marshal(tuple message) pure returns (bytes)
marshal
purefunction marshal(tuple consensusState) pure returns (bytes)
marshal
purefunction marshal(tuple message) pure returns (bytes)
marshalConsensusState
purefunction marshalConsensusState(bytes32 stateId, uint64 timestamp) pure returns (bytes)
routeClientMessage
purefunction routeClientMessage(string clientId, bytes protoClientMessage) pure returns (bytes32 typeUrlHash, bytes args)
unmarshalClientState
purefunction unmarshalClientState(bytes bz) pure returns (tuple clientState)
unmarshalConsensusState
purefunction unmarshalConsensusState(bytes bz) pure returns (tuple consensusState)
events
No events.
errors
No errors.
creation bytecode
0x6080806040523460195761399e908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80633e6cc801146100a45780634d7c5bd01461009f5780637b5821631461009a578063893d8a3714610095578063a56e54db14610090578063c973b32d1461008b578063e8f27d9d14610086578063ee70cbd7146100815763fd6c41fd1461007c575f80fd5b610c60565b610bd9565b6109c0565b6108bc565b6107d6565b6106f1565b610602565b61051b565b6100c86100c36100b3366101e3565b6100bb610dd7565b503691610e86565b61165f565b805160405161010b816100df602082018095610ebc565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610d5d565b519020610116610ece565b60405161012b816100df602082018095610ebc565b5190200361015357610143602061014f9201516117be565b604051918291826102e9565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e76616c696420636c69656e7420737461746520747970652075726c0000006044820152fd5b9181601f840112156101df5782359167ffffffffffffffff83116101df57602083818601950101116101df57565b5f80fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101df576004359067ffffffffffffffff82116101df5761022c916004016101b1565b9091565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9080602083519182815201916020808360051b8301019401925f915b83831061029e57505050505090565b90919293946020806102da837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951610230565b9701930193019193929061028f565b906104ba91602081526101c06103fb6103c661039261031686516102006020880152610220870190610230565b602087015167ffffffffffffffff16604087015260408701511515606087015261035e6060880151608088019067ffffffffffffffff60208092828151168552015116910152565b60808701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08783030160c0880152610273565b60a08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08683030160e0870152610273565b60c08501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085830301610100860152610273565b60e084015167ffffffffffffffff166101208401529261010081015167ffffffffffffffff1661014084015261012081015167ffffffffffffffff1661016084015261014081015163ffffffff1661018084015261016081015163ffffffff166101a084015261018081015163ffffffff16838301526101a081015167ffffffffffffffff166101e08401520151906102007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082850301910152610273565b90565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101df5760043567ffffffffffffffff81116101df57608090600401809203126101df5790565b9060206104ba928181520190610230565b610524366104bd565b61052c610f2f565b90610535610f48565b82526080813603126101df57610549610d9e565b91813567ffffffffffffffff81116101df576105689036908401610fa9565b8352602082013567ffffffffffffffff81116101df5761058b9036908401610fa9565b6020840152604082013567ffffffffffffffff81116101df576105b19036908401610fa9565b604084015260608201359167ffffffffffffffff83116101df5761014f936105e26105ec926105f695369101610fa9565b6060820152611b6c565b6020820152611bee565b6040519182918261050a565b61060b366104bd565b610613610f2f565b9061061c610fc4565b82526080813603126101df576040519161063583610d20565b61063e82611025565b8352602082013567ffffffffffffffff81116101df576106619036908401610fa9565b6020840152604082013567ffffffffffffffff81116101df576106879036908401610fa9565b604084015260608201359167ffffffffffffffff83116101df5761014f936106b86105ec926105f695369101610fa9565b6060820152611cbf565b60208152604067ffffffffffffffff60206106e7855184838701526060860190610230565b9401511691015290565b6107086100c3610700366101e3565b6100bb611036565b805160405161071f816100df602082018095610ebc565b51902061072a61104f565b60405161073f816100df602082018095610ebc565b5190200361076357610757602061014f920151611d21565b604051918291826106c2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f696e76616c696420636f6e73656e73757320737461746520747970652075726c6044820152fd5b359067ffffffffffffffff821682036101df57565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101df5760243567ffffffffffffffff811681036101df576105f661014f916105ec610826610f2f565b9161082f61104f565b835267ffffffffffffffff60405191600435602084015260208352610855604084610d5d565b6040519261086284610d41565b8352166020820152611dd3565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101df5760043567ffffffffffffffff81116101df57604090600401809203126101df5790565b6108c53661086f565b6108cd610f2f565b906108d66110b0565b82526040813603126101df57604051906108ef82610d41565b803567ffffffffffffffff81116101df5761090d9036908301610fa9565b825260208101359067ffffffffffffffff82116101df5761093091369101611129565b90602081019182526109438151516133fe565b6001018060011161099457925f935b835180518610156109995761096a86610971926128e9565b51516133fe565b806001016001116109945760019082010180911161099457600190940193610952565b61261a565b61014f6105f684866109b46109ad87611b1d565b809261292a565b81526020820152611bee565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101df5760043567ffffffffffffffff81116101df576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101df57610a31610f2f565b90610a3a610ece565b8252610a44610daf565b91816004013567ffffffffffffffff81116101df57610a699060043691850101610fa9565b8352610a77602483016107c1565b6020840152610a88604483016111a8565b6040840152610a9a36606484016111b5565b606084015260a482013567ffffffffffffffff81116101df57610ac390600436918501016111eb565b608084015260c482013567ffffffffffffffff81116101df57610aec90600436918501016111eb565b60a084015260e482013567ffffffffffffffff81116101df57610b159060043691850101611129565b60c0840152610b2761010483016107c1565b60e0840152610b3961012483016107c1565b610100840152610b4c61014483016107c1565b610120840152610b5f6101648301611025565b610140840152610b726101848301611025565b610160840152610b856101a48301611025565b610180840152610b986101c483016107c1565b6101a08401526101e48201359167ffffffffffffffff83116101df5761014f93610bce6105ec9260046105f69636920101611129565b6101c0820152611ec2565b610be23661086f565b610bea610f2f565b90610bf361104f565b82526040813603126101df5760405191610c0c83610d41565b813567ffffffffffffffff81116101df5761014f93610c426020610c4c95610c3a6105ec9536908301610fa9565b8452016107c1565b6020820152611dd3565b604051918291602083526020830190610230565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101df5760043567ffffffffffffffff81116101df57610caa9036906004016101b1565b6024359167ffffffffffffffff83116101df57610cce610cd69336906004016101b1565b9290916114e3565b9061014f6040519283928352604060208401526040830190610230565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff821117610d3c57604052565b610cf3565b6040810190811067ffffffffffffffff821117610d3c57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d3c57604052565b60405190610dad608083610d5d565b565b60405190610dad6101e083610d5d565b60405190610dcc82610d41565b5f6020838281520152565b610ddf610daf565b90606082525f60208301525f6040830152610df8610dbf565b606083015260606080830152606060a0830152606060c08301525f60e08301525f6101008301525f6101208301525f6101408301525f6101608301525f6101808301525f6101a083015260606101c0830152565b67ffffffffffffffff8111610d3c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610e9282610e4c565b91610ea06040519384610d5d565b8294818452818301116101df578281602093845f960137010152565b805191908290602001825e015f815290565b60405190610edd606083610d5d565b602482527f74617465000000000000000000000000000000000000000000000000000000006040837f2f6962632e6c69676874636c69656e74732e6c63702e76312e436c69656e745360208201520152565b60405190610f3c82610d41565b60606020838281520152565b60405190610f57606083610d5d565b603282527f72456e636c6176654b65794d65737361676500000000000000000000000000006040837f2f6962632e6c69676874636c69656e74732e6c63702e76312e5265676973746560208201520152565b9080601f830112156101df578160206104ba93359101610e86565b60405190610fd3606083610d5d565b603882527f65676973746572456e636c6176654b65794d65737361676500000000000000006040837f2f6962632e6c69676874636c69656e74732e6c63702e76312e5a4b444341505260208201520152565b359063ffffffff821682036101df57565b6040519061104382610d41565b5f602083606081520152565b6040519061105e606083610d5d565b602782527f75735374617465000000000000000000000000000000000000000000000000006040837f2f6962632e6c69676874636c69656e74732e6c63702e76312e436f6e73656e7360208201520152565b604051906110bf606083610d5d565b602c82527f6c69656e744d65737361676500000000000000000000000000000000000000006040837f2f6962632e6c69676874636c69656e74732e6c63702e76312e5570646174654360208201520152565b67ffffffffffffffff8111610d3c5760051b60200190565b9080601f830112156101df57813561114081611111565b9261114e6040519485610d5d565b81845260208085019260051b820101918383116101df5760208201905b83821061117a57505050505090565b813567ffffffffffffffff81116101df5760209161119d87848094880101610fa9565b81520191019061116b565b359081151582036101df57565b91908260409103126101df576040516111cd81610d41565b60206111e68183956111de816107c1565b8552016107c1565b910152565b81601f820112156101df5780359061120282611111565b926112106040519485610d5d565b82845260208085019360051b830101918183116101df5760208101935b83851061123c57505050505090565b843567ffffffffffffffff81116101df57820183603f820112156101df576020916112708583604086809601359101610e86565b81520194019361122d565b6112836110b0565b604051611298816100df602082018095610ebc565b51902090565b611283610f48565b611283610fc4565b6040516112bc606082610d5d565b602f81527f2f6962632e6c69676874636c69656e74732e6c63702e76312e5570646174654f60208201527f70657261746f72734d65737361676500000000000000000000000000000000006040820152604051611298816100df602082018095610ebc565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b90611377906104ba9493604084526040840191611321565b90602081830391015267ffffffffffffffff825116815260806113a9602084015160a0602085015260a0840190610273565b9267ffffffffffffffff604082015116604084015267ffffffffffffffff60608201511660608401520151906080818403910152610273565b906113fa906104ba9493604084526040840191611321565b90602081830391015263ffffffff8251168152606061143d61142b6020850151608060208601526080850190610230565b60408501518482036040860152610230565b920151906060818403910152610230565b90611466906104ba9493604084526040840191611321565b906020818303910152606061143d61142b61148a8551608086526080860190610230565b60208601518582036020870152610230565b906114b4906104ba9493604084526040840191611321565b90602081830391015260206114d28351604084526040840190610230565b920151906020818403910152610273565b916100c3906114f59295943691610e86565b805160405161150c816100df602082018095610ebc565b5190209161151861127b565b830361157057611540611531602061156c9401516124a2565b6040519687936020850161149c565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610d5d565b9190565b61157861129e565b83036115a057611540611591602061156c9401516123e2565b6040519687936020850161144e565b6115a86112a6565b83036115d0576115406115c1602061156c9401516122f8565b604051968793602085016113e2565b6115d86112ae565b8303611600576115406115f1602061156c940151612114565b6040519687936020850161135f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f756e737570706f7274656420636c69656e74206d6573736167652074797065006044820152606490fd5b90611668610f2f565b50815190611674610f2f565b5061167d610f2f565b6116856125d8565b9160205b61169285612647565b8110156117b5576116af6116a68783612d9e565b9092919361268d565b91600181036116dd5750506116d3816116cd86868a61169296613035565b9061268d565b945b949050611689565b6002036116fe57506116f8816116cd86868a61169296612ff6565b946116d5565b61170a8196929661269a565b600181146117a0575b61171c8161269a565b6005811461178b575b61172e8161269a565b8015611772575b8061174160029261269a565b14611750575b611692906116d5565b9361176a816117628861169294612f91565b91905061268d565b949050611747565b946117838161176289600294612e88565b959050611735565b94806117628861179a93612e26565b94611725565b9480611762886117af93612dc0565b94611713565b50935091505090565b906117c7610dd7565b508151916117d3610dd7565b506117dc610dd7565b926117e56125ee565b9060205b6117f282612647565b8110156119b357806118086116a6868094612d9e565b91600181036118295750506116cd8761182193836133ef565b935b936117e9565b600281036118475750506116cd8761184193836133d9565b93611823565b6003810361185f5750506116cd8761184193836133c2565b600481036118775750506116cd8761184193836132eb565b6005810361189957505061184191506116cd8461189261310c565b87846132a3565b600681036118bb57505061184191506116cd846118b461310c565b878461325b565b600781036118dd57505061184191506116cd846118d661310c565b8784613213565b600881036118f55750506116cd8761184193836131fd565b6009810361190d5750506116cd8761184193836131e6565b600a81036119255750506116cd8761184193836131cf565b600b810361193d5750506116cd8761184193836131bc565b600c81036119555750506116cd8761184193836131a9565b600d810361196d5750506116cd876118419383613196565b600e81036119855750506116cd876118419383613177565b600f036119a5575061184191506116cd8461199e61310c565b8784613119565b61184192826116cd92613093565b509293919093611a036020946119c98760a00190565b8051611b01575b5060c087018051611ae5575b5060e087018051611ac9575b506101e087018051611aa6575b509490505b611a0385612647565b811015611a9d578281611a1c6116a683611a0395612d9e565b9160058103611a405750506116cd8887611a3694846132a3565b945b9490506119fa565b60068103611a5f5750506116cd8887611a59948461325b565b94611a38565b60078103611a785750506116cd8887611a599484613213565b600f03611a8f57506116cd8887611a599484613119565b611a5992826116cd92613093565b50935050905090565b611ac16101c0870191611abb835151156126d1565b516126d8565b90525f6119f5565b611add60c0870191611abb835151156126d1565b90525f6119e8565b611af960a0870191611abb835151156126d1565b90525f6119dc565b611b156080870191611abb835151156126d1565b90525f6119d0565b90611b2782610e4c565b611b346040519182610d5d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b628294610e4c565b0190602036910137565b611b778151516133fe565b80600101908160011161099457611b926020840151516133fe565b8060010160011161099457600291010180911161099457611be2611bdd611bcc611be9936116cd611bc76040880151516133fe565b612655565b6116cd611bc76060870151516133fe565b611b1d565b80926127b3565b815290565b611bf98151516133fe565b908160010180600111610994576020820192611c168451516133fe565b8060010160011161099457600291010180911161099457611c3690611b1d565b91611c408361383f565b806020019283602011610994578484611c599251613413565b016020810180931161099457602090611c72858561384e565b0101809211610994578282611c879251613413565b8101809111610994577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810190811161099457815290565b611ccf63ffffffff825116613820565b6001018060011161099457611ce86020830151516133fe565b6001018060011161099457810180911161099457611d1a611bdd611bcc611be9936116cd611bc76040880151516133fe565b8092612875565b611d29611036565b50805190611d35611036565b50611d3e611036565b92602092830180841193845b6109945781811015611dcb57611d608482612d9e565b83018093116109945785908392600181145f14611d92575050611d899250876116cd91836133ef565b935b9384611d4a565b600203611db05750611daa9250876116cd91836133d9565b93611d8b565b611dbc92508390613093565b81018091116109945793611d8b565b509092505050565b611dde8151516133fe565b908160010180600111610994576020820192611e0467ffffffffffffffff855116613820565b8060010160011161099457600291010180911161099457611e2490611b1d565b9182602091835151611e94575b611be9935067ffffffffffffffff611e51825167ffffffffffffffff1690565b16611e5e575b505061273e565b816116cd91611e77856116cd611e8896611e8d9861385b565b9384915167ffffffffffffffff1690565b61348f565b825f611e57565b9190611e9f9061383f565b810180911161099457611ebc816116cd868094611be99751613413565b91611e31565b611f16611efe611ef9611ed9611bc78551516133fe565b6116cd611bc7611ef4602088015167ffffffffffffffff1690565b61347c565b612663565b6116cd611bc7611f1160608601516134a4565b6133fe565b60808201915f915b83518051841015611f47576001916116cd611bc761096a87611f3f956128e9565b920191611f1e565b5092509290505f9060a08401925b83518051841015611f7e576001916116cd611bc761096a87611f76956128e9565b920191611f55565b5092509290505f9060c08101925b83518051841015611fb5576001916116cd611bc761096a87611fad956128e9565b920191611f8c565b506120729194935061208e9250612042612025612009611fed61205a946116cd611bc7611ef460e08d015167ffffffffffffffff1690565b6116cd611bc7611ef46101008c015167ffffffffffffffff1690565b6116cd611bc7611ef46101208b015167ffffffffffffffff1690565b6116cd611bc761203d6101408a015163ffffffff1690565b61345c565b6116cd611bc761203d61016089015163ffffffff1690565b6116cd611bc761203d61018088015163ffffffff1690565b6116cd611bc7611ef46101a087015167ffffffffffffffff1690565b6101c08301915f915b835180518410156120c0576001916116cd611bc761096a876120b8956128e9565b920191612097565b506120d291949350611be99250611b1d565b80926129ce565b6040519060a0820182811067ffffffffffffffff821117610d3c5760405260606080835f81528260208201525f60408201525f838201520152565b9061211d6120d9565b508151916121296120d9565b506121326120d9565b9261213b612604565b9060205b61214882612647565b8110156121fe578061215e6116a6868094612d9e565b916001810361217f5750506116cd876121779383613708565b935b9361213f565b600281036121a75750506121a191506116cd8461219a61368c565b87846136c0565b93612179565b600381036121bf5750506116cd876121a193836136aa565b600481036121d75750506116cd876121a19383613694565b6005036121f057506121a191506116cd8461189261368c565b6121a192826116cd92613093565b5092939190936122356020946122148760400190565b80516122b9575b5060a08701805161229d575b509490505b61223585612647565b811015611a9d57828161224e6116a68361223595612d9e565b91600281036122725750506116cd888761226894846136c0565b945b94905061222c565b60050361228f57506116cd888761228994846132a3565b9461226a565b61228992826116cd92613093565b6122b16080870191611abb835151156126d1565b90525f612227565b6122cc87870191611abb835151156126d1565b90525f61221b565b604051906122e182610d20565b606080835f81528160208201528160408201520152565b6123006122d4565b5080519061230c6122d4565b506123156122d4565b9260205b61232284612647565b8110156123b857828161233b6116a68361232295612d9e565b916001810361235e5750506116cd876123549383613752565b935b939050612319565b6002810361237c5750506116cd876123769383613745565b93612356565b600381036123945750506116cd876123769383613738565b6004036123aa57506116cd876123769383613723565b61237692826116cd92613093565b50915050565b604051906123cb82610d20565b606080838181528160208201528160408201520152565b6123ea6123be565b508051906123f66123be565b506123ff6123be565b9260205b61240c84612647565b8110156123b85782816124256116a68361240c95612d9e565b91600181036124485750506116cd8761243e93836133ef565b935b939050612403565b600281036124665750506116cd876124609383613745565b93612440565b6003810361247e5750506116cd876124609383613738565b60040361249457506116cd876124609383613723565b61246092826116cd92613093565b906124ab610f2f565b508151916124b7610f2f565b506124c0610f2f565b926124c96125d8565b9060205b6124d682612647565b81101561253a57806124ec6116a6868094612d9e565b916001810361250d5750506116cd8761250593836133ef565b935b936124cd565b60020361252c575061252691506116cd8461219a613762565b93612507565b61252692826116cd92613093565b5092939190936125656020946125508760400190565b80516125bd575b509490505b61256585612647565b811015611a9d57828161258960026125808461256596612d9e565b9093919461268d565b92036125a957506116cd888761259f94846136c0565b945b94905061255c565b6125b792826116cd92613093565b946125a1565b6125d087870191611abb835151156126d1565b90525f612557565b604051906125e7606083610d5d565b6060368337565b604051906102006125ff8184610d5d565b368337565b6040519061261360c083610d5d565b60c0368337565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b602001908160201161099457565b600101908160011161099457565b906002820180921161099457565b906020820180921161099457565b906001820180921161099457565b9190820180921161099457565b600611156126a457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b156101df57565b906126e282611111565b6126ef6040519182610d5d565b82815260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061271f8395611111565b0191015f5b82811061273057505050565b606082820152602001612724565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820191821161099457565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161099457565b602003906020821161099457565b9190820391821161099457565b6020906104ba928291805151612851575b838101805151612834575b5060408101805151612814575b50606001908151516127f0575b50506127a6565b80612805846116cd6116cd9461280d97613882565b809351613413565b5f806127e9565b61282d906116cd84612805876116cd836060989a613875565b92906127dc565b6116cd83612805866116cd8361284a979961384e565b915f6127cf565b91612863816116cd8461286f94613868565b6116cd83828651613413565b916127c4565b6020906104ba92829163ffffffff612891825163ffffffff1690565b166128bf578381018051516128345750604081018051516128145750606001908151516127f05750506127a6565b916128d1816116cd8461286f9461388f565b6116cd83826128e4875163ffffffff1690565b61346b565b80518210156128fd5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b906020918051516129a0575b60200180515161294e575b505060206104ba916127a6565b9092915f905b82515182101561298f57612987612971826116cd8860019561384e565b6116cd87826129818789516128e9565b51613413565b910190612954565b929350602091506104ba9050612941565b916129ab8282613868565b8101809111610994576129c6816116cd846020948751613413565b929050612936565b90612a2b612a1c6020845151612d7c575b836020860167ffffffffffffffff6129ff825167ffffffffffffffff1690565b16612d5c575b50604086018051612d2e575b506116cd9082613882565b6116cd83826060870151613544565b9160808101805151612cf7575b5060a08101805151612cc0575b5060c08101805151612c79575b5060e08101612a79612a6c825167ffffffffffffffff1690565b67ffffffffffffffff1690565b612c58575b506101008101612a99612a6c825167ffffffffffffffff1690565b612c37575b506101208101612ab9612a6c825167ffffffffffffffff1690565b612c16575b50610140810163ffffffff612ad7825163ffffffff1690565b16612bf5575b506101608101612afd612af4825163ffffffff1690565b63ffffffff1690565b612bd4575b506101808101612b19612af4825163ffffffff1690565b612ba6575b506101a08101612b39612a6c825167ffffffffffffffff1690565b612b82575b506101c001805151612b5757505060206104ba916127a6565b9092915f905b82515182101561298f57612b7a612971826116cd8860019561392b565b910190612b5d565b611e886116cd84612b9f93611e77886116cd846101c0999b61391e565b9290612b3e565b6116cd836128e492612bc0876116cd84612bcd989a613911565b9384915163ffffffff1690565b915f612b1e565b6116cd836128e492612bc0876116cd84612bee989a613904565b915f612b02565b6116cd836128e492612bc0876116cd84612c0f989a6138f7565b915f612add565b6116cd83611e8892611e77876116cd84612c30989a6138ea565b915f612abe565b6116cd83611e8892611e77876116cd84612c51989a6138dd565b915f612a9e565b6116cd83611e8892611e77876116cd84612c72989a6138d0565b915f612a7e565b935f939193915b855151831015612cb557612cad612c9d826116cd876001956138c3565b6116cd8682612981888c516128e9565b920191612c80565b93915093505f612a52565b935f939193915b855151831015612cec57612ce4612c9d826116cd876001956138b6565b920191612cc7565b93915093505f612a45565b935f939193915b855151831015612d2357612d1b612c9d826116cd876001956138a9565b920191612cfe565b93915093505f612a38565b816116cd91612d47856116cd612d5096612d559861389c565b93849151151590565b6134f6565b835f612a11565b816116cd91611e77856116cd611e8896612d759861385b565b835f612a05565b612d8d816116cd86612d9994613868565b6116cd85828851613413565b6129df565b90612da891612e88565b9091600783169260068410156126a45760031c929190565b905f9181516020810180911161099457600882019081831161099457612dea919493941115612f5d565b5f9201918251905b60088110612e0d57505067ffffffffffffffff169160089150565b60019384019382821a600383901b1b9093179201612df2565b905f9181516020810180911161099457600482019081831161099457612e50919493941115612f5d565b5f9201918251905b60048110612e6f57505063ffffffff169160049150565b60019384019382821a600383901b1b9093179201612e58565b91905f905f93612e988251612671565b916080918101925b60808316608014612eb357505050509190565b808285031015612f075783515f905b602082106080861660801416612ed9575050612ea0565b949097959350818382031015612f075760018080878b1a9687607f168a6007021b1798019901910194612ec2565b7f08c379a0000000000000000000000000000000000000000000000000000000005f526020600452600f6024527f6c656e677468206f766572666c6f77000000000000000000000000000000000060445260535ffd5b15612f6457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b9190612f9d8184612e88565b93612fa782611b1d565b928051906020820180921161099457868301918284116109945784830180931161099457612fe993612fdd899287951115612f5d565b60208701920101613779565b8301809311610994579190565b604092939161300491612f91565b938061301c57505001613017815161267f565b905290565b6020015201805161302b575090565b613017815161276b565b602092939161304391612f91565b938061305657505001613017815161267f565b52018051613062575090565b8051907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610994575290565b91909161309f8161269a565b600181036130af57505050600890565b6130b88161269a565b600581036130c857505050600490565b6130d18161269a565b806130e557506130e091612e88565b905090565b806130f160029261269a565b036101df576130ff91612e88565b9081018091116109945790565b613114610dd7565b505f90565b9061312391612f91565b9290918061313c57506101e0915001613017815161267f565b6101c001519182516101e08301518103908111610994578361316b92613165836101e0976128e9565b526128e9565b5001613017815161276b565b61318e67ffffffffffffffff93926101a092612e88565b931691015290565b61318e63ffffffff939261018092612e88565b61318e63ffffffff939261016092612e88565b61318e63ffffffff939261014092612e88565b61318e67ffffffffffffffff939261012092612e88565b61318e67ffffffffffffffff939261010092612e88565b61318e67ffffffffffffffff939260e092612e88565b9061321d91612f91565b92909180613235575060e0915001613017815161267f565b60c0015191825160e08301518103908111610994578361316b926131658360e0976128e9565b9061326591612f91565b9290918061327d575060c0915001613017815161267f565b60a0015191825160c08301518103908111610994578361316b926131658360c0976128e9565b906132ad91612f91565b929091806132c5575060a0915001613017815161267f565b6080015191825160a08301518103908111610994578361316b926131658360a0976128e9565b91926132f5610dbf565b506133008284612e88565b80859692960180951161099457613315610dbf565b5061331e610dbf565b9585810180871196875b61099457818110156133a95761333e8782612d9e565b83018093116109945788908392600181145f1461337057505061336792508a6116cd9183613708565b965b9687613328565b60020361338e575061338892508a6116cd91836133d9565b96613369565b61339a92508390613093565b81018091116109945796613369565b50506133bc92955060609396945061268d565b92015290565b604092916133cf91613804565b9290151591015290565b61318e67ffffffffffffffff9392602092612e88565b906133f991612f91565b915290565b61340781613820565b81018091116109945790565b908151916020613424858486613938565b94855f9401019101905b838310613445575050905081018091116109945790565b600180809284515f1a81530192019201919061342e565b63ffffffff6104ba9116613820565b9063ffffffff6104ba939216613938565b67ffffffffffffffff6104ba9116613820565b9067ffffffffffffffff6104ba939216613938565b6134b867ffffffffffffffff825116613820565b8060010191826001116109945767ffffffffffffffff60206134dc92015116613820565b806001016001116109945760029101018091116109945790565b9092919015613539575f9260019101815b60071c91821561352d576001918291608017815301930190607f81169093909193613507565b90600193949250530190565b5f928391018161352d565b9291613552611bdd856134a4565b90602067ffffffffffffffff8651166135f6575b6135cc836135c6936135a16135c0946135d19760206104ba9b9c01613596612a6c825167ffffffffffffffff1690565b6135d657505061273e565b9485926135b86135b2848b87613938565b8a61268d565b958691612671565b9261268d565b90613779565b61268d565b6127a6565b816116cd91611e77856116cd611e88966135ef9861385b565b835f611e57565b909490935f93600893919291808701855b60071c95861561362d576001918291608017815301960197607f86169598969098613607565b906001939792965098949897939753018101809111610994576135cc836135c6936135a18883602061367a886116cd6135d19c6104ba9f9b611e886135c09d5167ffffffffffffffff1690565b97505050999850509350935050613566565b6131146120d9565b61318e67ffffffffffffffff9392606092612e88565b61318e67ffffffffffffffff9392604092612e88565b906136ca91612f91565b929091806136e257506040915001613017815161267f565b6020015191825160408301518103908111610994578361316b92613165836040976128e9565b67ffffffffffffffff929161371c91612e88565b9216905290565b6060929161373091612f91565b929091015290565b6040929161373091612f91565b6020929161373091612f91565b63ffffffff929161371c91612e88565b613114610f2f565b601f8111610994576101000a90565b909180156137ff575b602081116137b15761379e6137996137a392612798565b61376a565b61276b565b905182518216911916179052565b9091825181526020810180911161099457916020810180911161099457907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101908111156137825761261a565b505050565b9061380e91612e88565b91901561381b5760019190565b5f9190565b60019060071c805b613830575090565b60019091019060071c80613828565b5f91908290602001600a61352d565b5f9291839101601261352d565b5f9291839101601061352d565b5f9291839101600a61352d565b5f9291839101601a61352d565b5f9291839101602261352d565b5f9291839101600861352d565b5f9291839101601861352d565b5f9291839101602a61352d565b5f9291839101603261352d565b5f9291839101603a61352d565b5f9291839101604061352d565b5f9291839101604861352d565b5f9291839101605061352d565b5f9291839101605861352d565b5f9291839101606061352d565b5f9291839101606861352d565b5f9291839101607061352d565b5f9291839101607a61352d565b5f9392607f821692019060071c91821561352d576001918291608017815301930190607f8116909390919361350756fea2646970667358221220f334aa12f674addc5ba60bfce92c753b59400215eec34cbc3872f99bd720876764736f6c634300081c0033