UNPKG

@lightlink-network/ll-sdk

Version:

[LightLink] Tools for working with LightLink

1,227 lines 288 kB
{ "abi": [ { "type": "function", "name": "UPGRADE_INTERFACE_VERSION", "inputs": [], "outputs": [ { "name": "", "type": "string", "internalType": "string" } ], "stateMutability": "view" }, { "type": "function", "name": "chain", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract ICanonicalStateChain" } ], "stateMutability": "view" }, { "type": "function", "name": "chainOracle", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract IChainOracle" } ], "stateMutability": "view" }, { "type": "function", "name": "challengeDataRootInclusion", "inputs": [ { "name": "_blockIndex", "type": "uint256", "internalType": "uint256" }, { "name": "_pointerIndex", "type": "uint8", "internalType": "uint8" }, { "name": "_shareIndex", "type": "uint32", "internalType": "uint32" } ], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "payable" }, { "type": "function", "name": "challengeFee", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "challengeL2Header", "inputs": [ { "name": "_rblockNum", "type": "uint256", "internalType": "uint256" }, { "name": "_l2Num", "type": "uint256", "internalType": "uint256" } ], "outputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "stateMutability": "payable" }, { "type": "function", "name": "challengePeriod", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "challengeReward", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "challengeWindow", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "claimDAChallengeReward", "inputs": [ { "name": "_challengeKey", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "claimL2HeaderChallengeReward", "inputs": [ { "name": "_challengeKey", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "daChallenges", "inputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [ { "name": "blockHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "blockIndex", "type": "uint256", "internalType": "uint256" }, { "name": "pointerIndex", "type": "uint8", "internalType": "uint8" }, { "name": "shareIndex", "type": "uint32", "internalType": "uint32" }, { "name": "challenger", "type": "address", "internalType": "address" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }, { "name": "status", "type": "uint8", "internalType": "enum ChallengeDataAvailability.ChallengeDAStatus" }, { "name": "claimed", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "daNamespace", "inputs": [], "outputs": [ { "name": "version", "type": "bytes1", "internalType": "bytes1" }, { "name": "id", "type": "bytes28", "internalType": "bytes28" } ], "stateMutability": "view" }, { "type": "function", "name": "daOracle", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract IDAOracle" } ], "stateMutability": "view" }, { "type": "function", "name": "dataRootInclusionChallengeKey", "inputs": [ { "name": "_blockHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "_pointerIndex", "type": "uint8", "internalType": "uint8" }, { "name": "_shareIndex", "type": "uint32", "internalType": "uint32" } ], "outputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "stateMutability": "pure" }, { "type": "function", "name": "defendDataRootInclusion", "inputs": [ { "name": "_challengeKey", "type": "bytes32", "internalType": "bytes32" }, { "name": "_proof", "type": "tuple", "internalType": "struct SharesProof", "components": [ { "name": "data", "type": "bytes[]", "internalType": "bytes[]" }, { "name": "shareProofs", "type": "tuple[]", "internalType": "struct NamespaceMerkleMultiproof[]", "components": [ { "name": "beginKey", "type": "uint256", "internalType": "uint256" }, { "name": "endKey", "type": "uint256", "internalType": "uint256" }, { "name": "sideNodes", "type": "tuple[]", "internalType": "struct NamespaceNode[]", "components": [ { "name": "min", "type": "tuple", "internalType": "struct Namespace", "components": [ { "name": "version", "type": "bytes1", "internalType": "bytes1" }, { "name": "id", "type": "bytes28", "internalType": "bytes28" } ] }, { "name": "max", "type": "tuple", "internalType": "struct Namespace", "components": [ { "name": "version", "type": "bytes1", "internalType": "bytes1" }, { "name": "id", "type": "bytes28", "internalType": "bytes28" } ] }, { "name": "digest", "type": "bytes32", "internalType": "bytes32" } ] } ] }, { "name": "namespace", "type": "tuple", "internalType": "struct Namespace", "components": [ { "name": "version", "type": "bytes1", "internalType": "bytes1" }, { "name": "id", "type": "bytes28", "internalType": "bytes28" } ] }, { "name": "rowRoots", "type": "tuple[]", "internalType": "struct NamespaceNode[]", "components": [ { "name": "min", "type": "tuple", "internalType": "struct Namespace", "components": [ { "name": "version", "type": "bytes1", "internalType": "bytes1" }, { "name": "id", "type": "bytes28", "internalType": "bytes28" } ] }, { "name": "max", "type": "tuple", "internalType": "struct Namespace", "components": [ { "name": "version", "type": "bytes1", "internalType": "bytes1" }, { "name": "id", "type": "bytes28", "internalType": "bytes28" } ] }, { "name": "digest", "type": "bytes32", "internalType": "bytes32" } ] }, { "name": "rowProofs", "type": "tuple[]", "internalType": "struct BinaryMerkleProof[]", "components": [ { "name": "sideNodes", "type": "bytes32[]", "internalType": "bytes32[]" }, { "name": "key", "type": "uint256", "internalType": "uint256" }, { "name": "numLeaves", "type": "uint256", "internalType": "uint256" } ] }, { "name": "attestationProof", "type": "tuple", "internalType": "struct AttestationProof", "components": [ { "name": "tupleRootNonce", "type": "uint256", "internalType": "uint256" }, { "name": "tuple", "type": "tuple", "internalType": "struct DataRootTuple", "components": [ { "name": "height", "type": "uint256", "internalType": "uint256" }, { "name": "dataRoot", "type": "bytes32", "internalType": "bytes32" } ] }, { "name": "proof", "type": "tuple", "internalType": "struct BinaryMerkleProof", "components": [ { "name": "sideNodes", "type": "bytes32[]", "internalType": "bytes32[]" }, { "name": "key", "type": "uint256", "internalType": "uint256" }, { "name": "numLeaves", "type": "uint256", "internalType": "uint256" } ] } ] } ] } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "defendL2Header", "inputs": [ { "name": "_challengeHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "_headerHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "_headerPrevHash", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "defender", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", "name": "finalizationSeconds", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "initialize", "inputs": [ { "name": "_chain", "type": "address", "internalType": "address" }, { "name": "_daOracle", "type": "address", "internalType": "address" }, { "name": "_chainOracle", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "invalidateHeader", "inputs": [ { "name": "_blockIndex", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "isDAChallengeEnabled", "inputs": [], "outputs": [ { "name": "", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "isHeaderChallengeEnabled", "inputs": [], "outputs": [ { "name": "", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "isL2HeaderChallengeEnabled", "inputs": [], "outputs": [ { "name": "", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "l2HeaderChallengeHash", "inputs": [ { "name": "_rblockHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "_l2Num", "type": "uint256", "internalType": "uint256" } ], "outputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "stateMutability": "pure" }, { "type": "function", "name": "l2HeaderChallenges", "inputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [ { "name": "blockNum", "type": "uint256", "internalType": "uint256" }, { "name": "header", "type": "tuple", "internalType": "struct ChallengeL2Header.L2HeaderPointer", "components": [ { "name": "rblock", "type": "bytes32", "internalType": "bytes32" }, { "name": "number", "type": "uint256", "internalType": "uint256" } ] }, { "name": "prevHeader", "type": "tuple", "internalType": "struct ChallengeL2Header.L2HeaderPointer", "components": [ { "name": "rblock", "type": "bytes32", "internalType": "bytes32" }, { "name": "number", "type": "uint256", "internalType": "uint256" } ] }, { "name": "challengeEnd", "type": "uint256", "internalType": "uint256" }, { "name": "challenger", "type": "address", "internalType": "address" }, { "name": "status", "type": "uint8", "internalType": "enum ChallengeL2Header.L2HeaderChallengeStatus" }, { "name": "claimed", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "maxBundleSize", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "owner", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", "name": "proxiableUUID", "inputs": [], "outputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setChallengeFee", "inputs": [ { "name": "_challengeFee", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setChallengePeriod", "inputs": [ { "name": "_challengePeriod", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setChallengeReward", "inputs": [ { "name": "_challengeReward", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setChallengeWindow", "inputs": [ { "name": "_challengeWindow", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setDANamespace", "inputs": [ { "name": "_namespace", "type": "tuple", "internalType": "struct Namespace", "components": [ { "name": "version", "type": "bytes1", "internalType": "bytes1" }, { "name": "id", "type": "bytes28", "internalType": "bytes28" } ] } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setDAOracle", "inputs": [ { "name": "_daOracle", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setDefender", "inputs": [ { "name": "_defender", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setMaxBundleSize", "inputs": [ { "name": "_maxBundleSize", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "settleDataRootInclusion", "inputs": [ { "name": "_challengeKey", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "settleL2HeaderChallenge", "inputs": [ { "name": "_challengeHash", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "toggleDAChallenge", "inputs": [ { "name": "_status", "type": "bool", "internalType": "bool" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "toggleHeaderChallenge", "inputs": [ { "name": "_status", "type": "bool", "internalType": "bool" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "toggleL2HeaderChallenge", "inputs": [ { "name": "_status", "type": "bool", "internalType": "bool" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "transferOwnership", "inputs": [ { "name": "newOwner", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "upgradeToAndCall", "inputs": [ { "name": "newImplementation", "type": "address", "internalType": "address" }, { "name": "data", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "payable" }, { "type": "event", "name": "ChallengeDAUpdate", "inputs": [ { "name": "_blockHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "_pointerIndex", "type": "uint256", "indexed": true, "internalType": "uint256" }, { "name": "_shareIndex", "type": "uint32", "indexed": false, "internalType": "uint32" }, { "name": "_blockIndex", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "_expiry", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "_status", "type": "uint8", "indexed": true, "internalType": "enum ChallengeDataAvailability.ChallengeDAStatus" } ], "anonymous": false }, { "type": "event", "name": "Initialized", "inputs": [ { "name": "version", "type": "uint64", "indexed": false, "internalType": "uint64" } ], "anonymous": false }, { "type": "event", "name": "InvalidHeader", "inputs": [ { "name": "_blockIndex", "type": "uint256", "indexed": true, "internalType": "uint256" }, { "name": "_hash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "_reason", "type": "uint8", "indexed": true, "internalType": "enum ChallengeHeader.InvalidHeaderReason" } ], "anonymous": false }, { "type": "event", "name": "L2HeaderChallengeUpdate", "inputs": [ { "name": "challengeHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "l2Number", "type": "uint256", "indexed": true, "internalType": "uint256" }, { "name": "rblock", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "expiry", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "status", "type": "uint8", "indexed": true, "internalType": "enum ChallengeL2Header.L2HeaderChallengeStatus" } ], "anonymous": false }, { "type": "event", "name": "OwnershipTransferred", "inputs": [ { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "Upgraded", "inputs": [ { "name": "implementation", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "error", "name": "AddressEmptyCode", "inputs": [ { "name": "target", "type": "address", "internalType": "address" } ] }, { "type": "error", "name": "ERC1967InvalidImplementation", "inputs": [ { "name": "implementation", "type": "address", "internalType": "address" } ] }, { "type": "error", "name": "ERC1967NonPayable", "inputs": [] }, { "type": "error", "name": "FailedInnerCall", "inputs": [] }, { "type": "error", "name": "InvalidInitialization", "inputs": [] }, { "type": "error", "name": "NotInitializing", "inputs": [] }, { "type": "error", "name": "OwnableInvalidOwner", "inputs": [ { "name": "owner", "type": "address", "internalType": "address" } ] }, { "type": "error", "name": "OwnableUnauthorizedAccount", "inputs": [ { "name": "account", "type": "address", "internalType": "address" } ] }, { "type": "error", "name": "ReentrancyGuardReentrantCall", "inputs": [] }, { "type": "error", "name": "UUPSUnauthorizedCallContext", "inputs": [] }, { "type": "error", "name": "UUPSUnsupportedProxiableUUID", "inputs": [ { "name": "slot", "type": "bytes32", "internalType": "bytes32" } ] } ], "bytecode": { "object": "0x60a0806040523461002a5730608052614d729081610030823960805181818161165001526117f60152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c806301c1aa0d14612e455780630200501d1461294e5780630eea9bab146122cd578063113e70fb14612238578063163a7177146121a057806317eef5b1146120e75780631b0ec391146120b75780631bd8f9ca14612099578063325898b1146120765780633323d3e414611b7457806335bf82f614611ac657806339e87c2214611aa35780633ea0c15e14611a855780634329b10114611a08578063485bc239146119d05780634c1b6e4b146119b25780634f1ef286146117b857806351ad15cf146116ba57806352d1902d1461163d57806355c20747146116065780635ae45d8b14610fe65780635bba0ea914610e475780635d475fdd14610da35780635dade41214610a855780636da802c8146109df578063715018a6146109745780637d3020ad146108be5780637f4c91c51461089557806380a2558a14610872578063861a1412146108555780638da5cb5b1461081f57806395618a28146107e7578063988c6671146107ab57806398e2dffb14610781578063a3be6534146106e9578063ad3cb1cc1461068c578063bc67745114610669578063bfcf449514610640578063c0c53b8b14610465578063c763e5a11461043c578063ee223c0214610413578063f2fde38b146103e6578063f3f480d9146103c8578063f8a22c6c1461024e5763fa8e8de21461020c57600080fd5b3461024b57604036600319011261024b57602060405181810190600435825260243560408201526040815261024081612ee8565b519020604051908152f35b80fd5b503461024b57602036600319011261024b57600435808252607160205260408220906006820190815491610293600160ff8560a01c1661028d81613184565b1461321e565b600584019283544211156103835760ff60a01b1916600160a11b1790556006548354600019810193916001600160a01b031690841161036f57859060018601948554823b1561036b57604484928360405195869485936334c9bca560e01b8552600485015260248401525af1801561036057610348575b505060407f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec2916002809601549454905482519182526020820152a480f35b61035190612f34565b61035c57843861030a565b8480fd5b6040513d84823e3d90fd5b8380fd5b634e487b7160e01b86526011600452602486fd5b60405162461bcd60e51b815260206004820152601e60248201527f6368616c6c656e676520706572696f6420686173206e6f7420656e64656400006044820152606490fd5b503461024b578060031936011261024b576020600154604051908152f35b503461024b57602036600319011261024b576104106104036131a4565b61040b61393f565b6138cb565b80f35b503461024b578060031936011261024b576008546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b576006546040516001600160a01b039091168152602090f35b503461024b57606036600319011261024b5761047f6131a4565b6001600160a01b03602435818116929083900361063b576044359082821680920361063b577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009384549360ff8560401c1615946001600160401b03811680159081610633575b6001149081610629575b159081610620575b5061060e5767ffffffffffffffff1981166001178755856105ef575b5061051c61446d565b61052461446d565b61052c61446d565b610535336138cb565b61053d61446d565b61054561446d565b6001600080516020614d46833981519152556203f48087556202a3006001556714d1120d7b1600006002556702c68af0bb1400006003556001600160601b0360a01b9216826006541617600655816008541617600855600554161760055561a410603c556105b1575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff19166801000000000000000117865538610513565b60405163f92ee8a960e01b8152600490fd5b905015386104f7565b303b1591506104ef565b8791506104e5565b600080fd5b503461024b578060031936011261024b576005546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b5761068361393f565b600435603c5580f35b503461024b578060031936011261024b576106db604080516106ad81612f19565b6005815260208101640352e302e360dc1b8152825193849260208452518092816020860152858501906131fb565b601f01601f19168101030190f35b503461024b57602036600319011261024b576107036131a4565b61070b61393f565b6001600160a01b03168015610730576001600160601b0360a01b600854161760085580f35b60405162461bcd60e51b815260206004820152602360248201527f64614f7261636c652063616e6e6f7420626520746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b503461024b578060031936011261024b576107a3602091600154905490613570565b604051908152f35b503461024b57602036600319011261024b576004358015158091036107e3576107d261393f565b60ff8019603b5416911617603b5580f35b5080fd5b503461024b57602036600319011261024b576004358015158091036107e35761080e61393f565b60ff80196072541691161760725580f35b503461024b578060031936011261024b57600080516020614ce6833981519152546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b5760209054604051908152f35b503461024b578060031936011261024b57602060ff607054166040519015158152f35b503461024b578060031936011261024b576004546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b576004356108db61393f565b662386f26fc1000081101580610962575b156108f75760035580f35b60405162461bcd60e51b815260206004820152603860248201527f6368616c6c656e676520726577617264206d757374206265206265747765656e60448201527f20302e303120657468657220616e6420313020657468657200000000000000006064820152608490fd5b50678ac7230489e800008111156108ec565b503461024b578060031936011261024b5761098d61393f565b600080516020614ce683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024b57602036600319011261024b57604061012091600435815260716020522060ff815491610a13600182016131dd565b610a1f600383016131dd565b916020600660058301549201549381868660a01c16946040519889528051828a015201516040880152805160608801520151608086015260a085015260018060a01b03821660c0850152610a7281613184565b60e084015260a81c161515610100820152f35b503461024b576020908160031936011261024b576004359160018060a01b0360065416926040516247a8e360e11b81528281600481885afa8015610d98578490610d69575b610ad791508211156136dc565b610ae2811515613728565b60405193631614b30360e21b9283865282600487015260249581818881865afa908115610c85578691610d3c575b5060405190630a2a343960e21b825260048201526040818881865afa908115610c85576001600160401b03610b5d92610b55928991610d0d575b505116875490613570565b4211156137aa565b60ff603b541615610cca5760405193845282600485015280848781855afa938415610cbf578594610c90575b5060405163392af9bf60e11b81526004810184905285818881865afa908115610c855785610bc09286928991610c63575b50613dab565b610c2e57506000198201918211610c1a57938484953b1561035c5784928360449260405196879586946334c9bca560e01b865260048601528401525af1801561036057610c0a5750f35b610c1390612f34565b61024b5780f35b5050634e487b7160e01b8252506011600452fd5b606490600f876040519262461bcd60e51b845260048401528201526e1a195859195c881a5cc81d985b1a59608a1b6044820152fd5b610c7f91503d808b833e610c778183612f62565b8101906133ec565b38610bba565b6040513d88823e3d90fd5b9080945081813d8311610cb8575b610ca88183612f62565b8101031261063b57519238610b89565b503d610c9e565b6040513d87823e3d90fd5b606490601c876040519262461bcd60e51b845260048401528201527f686561646572206368616c6c656e67652069732064697361626c6564000000006044820152fd5b610d2f915060403d604011610d35575b610d278183612f62565b810190613774565b38610b4a565b503d610d1d565b90508181813d8311610d62575b610d538183612f62565b8101031261063b575138610b10565b503d610d49565b508281813d8311610d91575b610d7f8183612f62565b8101031261063b57610ad79051610aca565b503d610d75565b6040513d86823e3d90fd5b503461024b57602036600319011261024b57600435610dc061393f565b61a8c081101580610e3a575b15610dd75760015580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e676520706572696f64206d757374206265206265747765656e60448201527420313220686f75727320616e642033207765656b7360581b6064820152608490fd5b50621baf80811115610dcc565b503461024b57602036600319011261024b57610e61613978565b6004358152606f60205260408120906004820191825492610e8a600160ff861661028d81613184565b60038201938454421115610fa15760ff191660021790556006546001820180549092916001600160a01b0316906000198101908111610f8d57825490823b15610f895790604486928360405195869485936334c9bca560e01b8552600485015260248401525af18015610d9857610f67575b50600080516020614d26833981519152600293948483549301549354905490610f4f60405192839263ffffffff60ff89169860081c168460409194939263ffffffff606083019616825260208201520152565b0390a46001600080516020614d468339815191525580f35b600293610f82600080516020614d2683398151915292612f34565b9350610efc565b8580fd5b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b815260206004820152601960248201527f6368616c6c656e676520686173206e6f742065787069726564000000000000006044820152606490fd5b50604036600319011261024b576006546040516247a8e360e11b81526001600160a01b0390911690602081600481855afa80156115315783906115d2575b611033915060043511156136dc565b6110406004351515613728565b604051631614b30360e21b808252600480359083015290602081602481865afa908115610d985784916115a0575b5060405190630a2a343960e21b82526004820152604081602481865afa8015610d98576001600160401b03610b55916110b3938791611581575b505116855490613570565b6110c060025434146137f6565b60ff607254161561153c576040519081526004356004820152602081602481855afa9081156115315783916114fb575b5060405163392af9bf60e11b81526004803590820152918383602481845afa928315610d985784936114df575b506004356000198101116114cb57836024916040519283809263392af9bf60e11b82526000196004350160048301525afa908115610d985784916114b1575b50604051602081019083825260243560408201526040815261117d81612ee8565b5190209283855260716020526111a960ff600660408820015460a01c166111a381613184565b1561383b565b6001600160401b036020830151166024351180611498575b1561143a5760016004351480611418575b6113ad57604051916111e383612f19565b8383526024356020840181905260001981011161036f5760405161120681612f19565b848152600019602435016020820152916001600160401b0361122d816020850151166138b3565b166024351461137c575b505061124560015442613570565b6040519160e083018381106001600160401b038211176113685760019594936020989389899460069460405260043584528184019788526040840190815260608401928352816080850198338a52604060a08701998d8b5260c0880199818b5281526071845220955186555180518c870155015160028501555180516003850155015160048301555160058201550192858060a01b0390511683549251916112ec83613184565b6112f583613184565b60ff60a81b9051151560a81b169269ff