@layerzerolabs/hyperliquid-composer
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid
1 lines • 305 kB
JSON
{"abi":[{"type":"function","name":"ALICE","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_SEND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DST_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HYPE","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"SRC_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hyperLiquidComposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HyperLiquidComposer"}],"stateMutability":"view"},{"type":"function","name":"oft","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract OFTMock"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_panic_invalid_message","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unauthorized_call_not_endpoint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unauthorized_call_not_oft","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"userA","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x600c8054600160ff199182168117909255601f8054909116909117905560c06040526005608090815264757365724160d81b60a0526200003f90620000b9565b602680546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b60208201526200008690620000b9565b602780546001600160a01b0319166001600160a01b0392909216919091179055348015620000b2575f80fd5b5062000296565b5f620000c582620000cc565b5092915050565b5f8082604051602001620000e1919062000207565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200014b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000171919062000224565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001af908590879060040162000253565b5f604051808303815f87803b158015620001c7575f80fd5b505af1158015620001da573d5f803e3d5ffd5b50505050915091565b5f5b83811015620001ff578181015183820152602001620001e5565b50505f910152565b5f82516200021a818460208701620001e3565b9190910192915050565b5f6020828403121562000235575f80fd5b81516001600160a01b03811681146200024c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f825180604084015262000281816060850160208701620001e3565b601f01601f1916919091016060019392505050565b61b87680620002a45f395ff3fe608060405234801562000010575f80fd5b5060043610620001e0575f3560e01c8063a09e74301162000107578063c33d080d116200009f578063deb22e9a1162000077578063deb22e9a14620004cf578063e20c9f7114620004f0578063fa7626d414620004fa578063fad942fa1462000508575f80fd5b8063c33d080d1462000457578063c9279a7414620004a4578063cb1a295f14620004ae575f80fd5b8063b5508aa911620000df578063b5508aa914620003fe578063ba414fa61462000408578063ba8726791462000423578063bb641b3e146200042d575f80fd5b8063a09e743014620003c9578063a9783f6f14620003ea578063b0464fdc14620003f4575f80fd5b806366d9a9a0116200017b5780637ecd9ac311620001535780637ecd9ac3146200035257806385226c81146200036e578063916a17c614620003875780639b5215f614620003a0575f80fd5b806366d9a9a014620002a35780637645f2b114620002bc57806376e86e7214620002c6575f80fd5b80632ade388011620001bb5780632ade38801462000234578063318f405a146200024d5780633e5e3c23146200028f5780633f7286f41462000299575f80fd5b80630a9254e414620001e4578063176e619e14620001f05780631ed7831c146200021b575b5f80fd5b620001ee62000512565b005b602454620002019063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6200022562000d87565b60405162000212919062003a7c565b6200023e62000df6565b60405162000212919062003b28565b6200026973f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000212565b6200022562000f4b565b6200022562000fb8565b620002ad62001025565b60405162000212919062003c92565b620001ee620011aa565b602254602354620003139173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845267ffffffffffffffff909216602084015260070b9082015260600162000212565b6200026973333333333333333333333333333333333333333381565b620003786200147c565b60405162000212919062003d3b565b6200039162001551565b60405162000212919062003dbf565b6024546200026990640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b602554620002699073ffffffffffffffffffffffffffffffffffffffff1681565b620001ee62001658565b62000391620017fa565b6200037862001901565b62000412620019d6565b604051901515815260200162000212565b6200026961080181565b6200043d670de0b6b3a764000081565b60405167ffffffffffffffff909116815260200162000212565b602054602154620003139173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b62000201619ce181565b602754620002699073ffffffffffffffffffffffffffffffffffffffff1681565b602654620002699073ffffffffffffffffffffffffffffffffffffffff1681565b6200022562001aaa565b601f54620004129060ff1681565b620001ee62001b17565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af1925050508015620005ee575060408051601f3d908101601f19168201909252620005eb9181019062003e5d565b60015b6200069857620006176040518060600160405280603e81526020016200b803603e913962001d3f565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b1580156200067b575f80fd5b505af11580156200068e573d5f803e3d5ffd5b505050506200069a565b505b6040518060600160405280620006b26104cf62001db7565b73ffffffffffffffffffffffffffffffffffffffff90811682526104cf602080840191909152600c6040938401528351815485830151919093167fffffffff00000000000000000000000000000000000000000000000000000000938416177401000000000000000000000000000000000000000067ffffffffffffffff9283160217825593830151602180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000908116929096169190911790558251606081018452732222222222222222222222222222222222222222815261045191810191909152600890830181905260228054909216750451222222222222222222222222222222222222222217909155602380549093161790915551737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c7829061080190620007f790620039e4565b604051809103905ff08015801562000811573d5f803e3d5ffd5b5073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b81526004016200086292919062003e75565b5f604051808303815f87803b1580156200087a575f80fd5b505af11580156200088d573d5f803e3d5ffd5b50506020546040517f312f619f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b1580156200092a575f80fd5b505af11580156200093d573d5f803e3d5ffd5b50506022546040517f312f619f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b158015620009da575f80fd5b505af1158015620009ed573d5f803e3d5ffd5b5050505073f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162000a1590620039f2565b62000a2292919062003ead565b604051809103905ff08015801562000a3c573d5f803e3d5ffd5b50602480547fffffffffffffffff0000000000000000000000000000000000000000ffffffff1664010000000073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905560205460215460405173f9e1815f151024bde4b7c10bac10e8ba9f6b53e19593909404909216927401000000000000000000000000000000000000000090910467ffffffffffffffff169160070b9062000ae59062003a00565b73ffffffffffffffffffffffffffffffffffffffff948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562000b3c573d5f803e3d5ffd5b50602580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602454604080517f5e280f11000000000000000000000000000000000000000000000000000000008152905164010000000090920490921691635e280f119160048083019260209291908290030181865afa15801562000be0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c06919062003f57565b73ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c4f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c75919062003f8c565b602480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911781556040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e1600482015268056bc75e2d6310000091810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801562000d32575f80fd5b505af115801562000d45573d5f803e3d5ffd5b505060245460255462000d85935073ffffffffffffffffffffffffffffffffffffffff6401000000009092048216925016670de0b6b3a764000062001dde565b565b6060601680548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562000f42575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000f2a578382905f5260205f2001805462000e989062003fb1565b80601f016020809104026020016040519081016040528092919081815260200182805462000ec69062003fb1565b801562000f155780601f1062000eeb5761010080835404028352916020019162000f15565b820191905f5260205f20905b81548152906001019060200180831162000ef757829003601f168201915b50505050508152602001906001019062000e78565b50505050815250508152602001906001019062000e19565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562000f42578382905f5260205f2090600202016040518060400160405290815f820180546200107b9062003fb1565b80601f0160208091040260200160405190810160405280929190818152602001828054620010a99062003fb1565b8015620010f85780601f10620010ce57610100808354040283529160200191620010f8565b820191905f5260205f20905b815481529060010190602001808311620010da57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200119157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200113d5790505b5050505050815250508152602001906001019062001048565b604080516020602482018190525f6044808401919091528351808403909101815260649092018352810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ed4895a0000000000000000000000000000000000000000000000000000000017905260255491517f61ebcf120000000000000000000000000000000000000000000000000000000081529091737109709ecfa91a80626ff3989d68f67f5b1dd12d916361ebcf12916200128491859173ffffffffffffffffffffffffffffffffffffffff169060040162004004565b5f604051808303815f87803b1580156200129c575f80fd5b505af1158015620012af573d5f803e3d5ffd5b50506040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156200132a575f80fd5b505af11580156200133d573d5f803e3d5ffd5b5050602554602480546040517fd0a1026000000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff90811660048301525f92820183905260a0604483015260a4820183905233606483015260c0608483015260c48201929092529116925063d0a10260915060e4015b5f604051808303815f87803b158015620013e3575f80fd5b505af1158015620013f6573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001462575f80fd5b505af115801562001475573d5f803e3d5ffd5b5050505050565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562000f42578382905f5260205f20018054620014bf9062003fb1565b80601f0160208091040260200160405190810160405280929190818152602001828054620014ed9062003fb1565b80156200153c5780601f1062001512576101008083540402835291602001916200153c565b820191905f5260205f20905b8154815290600101906020018083116200151e57829003601f168201915b5050505050815260200190600101906200149f565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562000f42575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200163f57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620015eb5790505b5050505050815250508152602001906001019062001574565b6040805173f9e1815f151024bde4b7c10bac10e8ba9f6b53e160248201523060448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fefa9309d0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906200172a9084906004016200403d565b5f604051808303815f87803b15801562001742575f80fd5b505af115801562001755573d5f803e3d5ffd5b5050602554602480546040517fd0a1026000000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff90811660048301525f92820183905260a0604483015260a4820183905233606483015260c0608483015260c48201929092529116925063d0a10260915060e4015f604051808303815f87803b15801562001462575f80fd5b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562000f42575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015620018e857602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620018945790505b505050505081525050815260200190600101906200181d565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562000f42578382905f5260205f20018054620019449062003fb1565b80601f0160208091040260200160405190810160405280929190818152602001828054620019729062003fb1565b8015620019c15780601f106200199757610100808354040283529160200191620019c1565b820191905f5260205f20905b815481529060010190602001808311620019a357829003601f168201915b50505050508152602001906001019062001924565b6008545f9060ff1615620019ee575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562001a7d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001aa3919062003e5d565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575050505050905090565b602480546040805173ffffffffffffffffffffffffffffffffffffffff6401000000009093048316938101939093525f60448085019190915281518085039091018152606490930181526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f86fee0c00000000000000000000000000000000000000000000000000000000017905260255490517f61ebcf12000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d926361ebcf129262001c02928692919091169060040162004004565b5f604051808303815f87803b15801562001c1a575f80fd5b505af115801562001c2d573d5f803e3d5ffd5b50506040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b15801562001ca8575f80fd5b505af115801562001cbb573d5f803e3d5ffd5b50506025546040517fd0a102600000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905260a0604483015260a4820181905233606483015260c0608483015260c482015273ffffffffffffffffffffffffffffffffffffffff909116925063d0a10260915060e401620013cb565b62001db48160405160240162001d5691906200403d565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262001df1565b50565b5f62001dd8827320000000000000000000000000000000000000006200407e565b92915050565b62001dec8383835f62001dfc565b505050565b62001db481620020a0565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f9287169162001e8c9162004094565b5f60405180830381855afa9150503d805f811462001ec6576040519150601f19603f3d011682016040523d82523d5f602084013e62001ecb565b606091505b509150505f8180602001905181019062001ee6919062003e5d565b905062001f398462001f328762001f2b7f70a082310000000000000000000000000000000000000000000000000000000062001f24600d8d620020bf565b906200210b565b9062002143565b906200217b565b8215620020985760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f9173ffffffffffffffffffffffffffffffffffffffff89169162001fbe919062004094565b5f60405180830381855afa9150503d805f811462001ff8576040519150601f19603f3d011682016040523d82523d5f602084013e62001ffd565b606091505b509150505f8180602001905181019062002018919062003e5d565b90508286101562002043576200202f8684620040b1565b6200203b9082620040b1565b90506200205e565b6200204f8387620040b1565b6200205b90826200407e565b90505b620020958162001f327f18160ddd0000000000000000000000000000000000000000000000000000000062001f24600d8d620020bf565b50505b505050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6004820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f825b9392505050565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f8262002104565b6001808301805491820181555f9081526020812073ffffffffffffffffffffffffffffffffffffffff84169201919091558262002104565b6200218782826200218b565b5050565b60048201546002830154600384015473ffffffffffffffffffffffffffffffffffffffff9092169160e09190911b905f620021c68662002745565b73ffffffffffffffffffffffffffffffffffffffff85165f908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051939450926200222b918591879101620040c7565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620022695762002267865f62002858565b505b73ffffffffffffffffffffffffffffffffffffffff84165f908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190918391620022ce918691889101620040c7565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f816002015482600101546200230a91906200407e565b111562002442575f816002015482600101546200232891906200407e565b6200233690610100620040b1565b6200234390600262004221565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015620023b1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620023da91908101906200428f565b604051602001620023ec919062004329565b604051602081830303815290604052906200243f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200243691906200403d565b60405180910390fd5b50505b80546040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101919091525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620024cb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620024f1919062003e5d565b60018381015460028501549293505f92908101610100039190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b1983169089901b1783546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152602481019190915260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b158015620025c5575f80fd5b505af1158015620025d8573d5f803e3d5ffd5b505050505f80620025e98b6200286d565b91509150811580620025fb5750898114155b156200272d5784546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b166004820152602481019190915260448101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b1580156200268b575f80fd5b505af11580156200269e573d5f803e3d5ffd5b50506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a2046616960448201527f6c656420746f2077726974652076616c75652e0000000000000000000000000060648201526084019150620024369050565b620027388b6200294b565b5050505050505050505050565b6060816007018054620027589062003fb1565b90505f03620027be5762001dd882600101805480602002602001604051908101604052809291908181526020018280548015620027b357602002820191905f5260205f20905b8154815260200190600101908083116200279e575b505050505062002956565b816007018054620027cf9062003fb1565b80601f0160208091040260200160405190810160405280929190818152602001828054620027fd9062003fb1565b80156200284c5780601f1062002822576101008083540402835291602001916200284c565b820191905f5260205f20905b8154815290600101906020018083116200282e57829003601f168201915b50505050509050919050565b5f620028658383620029fa565b549392505050565b60028101545f908190819060e01b620028868562002745565b60405160200162002899929190620043bb565b60408051601f198184030181529082905260048601549092505f91829173ffffffffffffffffffffffffffffffffffffffff1690620028da90859062004094565b5f60405180830381855afa9150503d805f811462002914576040519150601f19603f3d011682016040523d82523d5f602084013e62002919565b606091505b50915091505f6200293d828860030154602062002937919062004404565b62003361565b929792965091945050505050565b62001db481620033f4565b60605f8251602062002969919062004404565b67ffffffffffffffff8111156200298457620029846200422e565b6040519080825280601f01601f191660200182016040528015620029af576020820181803683370190505b5090505f5b8351811015620029f3575f848281518110620029d457620029d46200441e565b60209081029190910181015183820285019091015250600101620029b4565b5092915050565b6004820154600283015460038401545f9273ffffffffffffffffffffffffffffffffffffffff169160e01b908362002a328762002745565b73ffffffffffffffffffffffffffffffffffffffff85165f908152602089815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519394509262002a97918591879101620040c7565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff161562002b6d57851562002ada5762002ada87620033f4565b73ffffffffffffffffffffffffffffffffffffffff84165f908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162002b3e918591879101620040c7565b6040516020818303038152906040528051906020012081526020019081526020015f2094505050505062001dd8565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663266cf1096040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002bd5575f80fd5b505af115801562002be8573d5f803e3d5ffd5b505050505f62002bf8886200286d565b6040517f65bc948100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201529092505f9150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024015f604051808303815f875af115801562002c7b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002ca49190810190620044d1565b50905080515f0362002d3b57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002436565b80515b5f62002d4a8262004538565b915081106200319c575f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663667f9d708985858151811062002da85762002da86200441e565b60200260200101516040518363ffffffff1660e01b815260040162002def92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602060405180830381865afa15801562002e0b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e31919062003e5d565b90508062002ea8577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58884848151811062002e705762002e706200441e565b6020908102919091018101516040805173ffffffffffffffffffffffffffffffffffffffff9094168452918301520160405180910390a15b62002ed08b84848151811062002ec25762002ec26200441e565b602002602001015162003499565b62002edc575062002d3e565b60068b01545f90819060ff161562002f30575f62002f178e87878151811062002f095762002f096200441e565b602002602001015162003710565b909450925090508062002f2e575050505062002d3e565b505b6001828201610100031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b8316811c86811462002f74575050505062002d3e565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162002fac929190620040c7565b6040516020818303038152906040528051906020012089898151811062002fd75762002fd76200441e565b6020908102919091018101516040805173ffffffffffffffffffffffffffffffffffffffff90961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a160405180608001604052808787815181106200306057620030606200441e565b60200260200101515f1c8152602001848152602001838152602001600115158152508e5f015f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8a8c60405160200162003123929190620040c7565b60408051808303601f1901815291815281516020928301208352828201939093529082015f2083518155908301516001820155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055505050505b5073ffffffffffffffffffffffffffffffffffffffff86165f90815260208a815260408083207fffffffff00000000000000000000000000000000000000000000000000000000891684528252808320905190929162003201918791899101620040c7565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620032ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162002436565b8715620032cc57620032cc89620033f4565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260208a815260408083207fffffffff00000000000000000000000000000000000000000000000000000000891684528252808320905190929162003330918791899101620040c7565b6040516020818303038152906040528051906020012081526020019081526020015f20965050505050505092915050565b5f805f60208551116200337657845162003379565b60205b90505f5b81811015620033ea576200339381600862004404565b86620033a083886200407e565b81518110620033b357620033b36200441e565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217916001016200337d565b5090949350505050565b6004810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562003457600182015f62003a0e565b5f600382018190556006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905562001db490600783019062003a2b565b6004828101546040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018290525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200352a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003550919062003e5d565b90505f806200355f866200286d565b90925090505f811562003573575f62003595565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6004888101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116918101919091526024810188905260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003628575f80fd5b505af11580156200363b573d5f803e3d5ffd5b505050505f6200364b886200286d565b60048a8101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018a905260448101889052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506370ca10bb906064015f604051808303815f87803b158015620036df575f80fd5b505af1158015620036f2573d5f803e3d5ffd5b50505050838015620037045750808314155b98975050505050505050565b6004828101546040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018290525f90819081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620037a5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620037cb919062003e5d565b90505f80620037dd88886001620038b7565b915091505f80620037f08a8a5f620038b7565b60048c8101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018c9052604481018890529193509150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003885575f80fd5b505af115801562003898573d5f803e3d5ffd5b50505050838015620038a75750815b9a92995097509095505050505050565b5f805f5b610100811015620039d4575f84620038d7576001821b620038e9565b620038e48260ff620040b1565b6001901b5b6004888101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116918101919091526024810188905260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b1580156200397c575f80fd5b505af11580156200398f573d5f803e3d5ffd5b505050505f80620039a0896200286d565b91509150818015620039b157508015155b15620039c8576001849550955050505050620039dc565b505050600101620038bb565b505f80915091505b935093915050565b6102bb806200457083390190565b613ecb806200482b83390190565b61310d80620086f683390190565b5080545f8255905f5260205f209081019062001db4919062003a62565b50805462003a399062003fb1565b5f825580601f1062003a49575050565b601f0160209004905f5260205f209081019062001db491905b5b8082111562003a78575f815560010162003a63565b5090565b602080825282518282018190525f9190848201906040850190845b8181101562003acb57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162003a97565b50909695505050505050565b5f5b8381101562003af357818101518382015260200162003ad9565b50505f910152565b5f815180845262003b1481602086016020860162003ad7565b601f01601f19169290920160200192915050565b602080825282518282018190525f919060409081850190600581811b87018401888601875b8481101562003c25577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a84030186528151805173ffffffffffffffffffffffffffffffffffffffff168452880151888401889052805188850181905290890190606081871b8601810191908601905f5b8181101562003c0e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088850301835262003bfb84865162003afb565b948d01949350918c019160010162003bbe565b505050968901969350509087019060010162003b4d565b50909998505050505050505050565b5f815180845260208085019450602084015f5b8381101562003c875781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162003c47565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101562003d2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151805187855262003cfe8886018262003afb565b91890151858303868b015291905062003d18818362003c34565b96890196945050509086019060010162003cb9565b509098975050505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101562003db2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262003d9f85835162003afb565b9450928501929085019060010162003d62565b5092979650505050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101562003d2d578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905262003e498785018262003c34565b958801959350509086019060010162003de6565b5f6020828403121562003e6e575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f62003ea5604083018462003afb565b949350505050565b608081525f62003eea60808301600481527f7465737400000000000000000000000000000000000000000000000000000000602082015260400190565b828103602084015262003f2781600481527f7465737400000000000000000000000000000000000000000000000000000000602082015260400190565b91505073ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509392505050565b5f6020828403121562003f68575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811462002104575f80fd5b5f6020828403121562003f9d575f80fd5b815163ffffffff8116811462002104575f80fd5b600181811c9082168062003fc657607f821691505b60208210810362003ffe577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b604081525f62004018604083018562003afb565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b602081525f62002104602083018462003afb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111562001dd85762001dd862004051565b5f8251620040a781846020870162003ad7565b9190910192915050565b8181038181111562001dd85762001dd862004051565b5f8351620040da81846020880162003ad7565b9190910191825250602001919050565b600181815b808511156200414957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156200412d576200412d62004051565b808516156200413b57918102915b93841c9390800290620040ef565b509250929050565b5f82620041615750600162001dd8565b816200416f57505f62001dd8565b81600181146200418857600281146200419357620041b3565b600191505062001dd8565b60ff841115620041a757620041a762004051565b50506001821b62001dd8565b5060208310610133831016604e8410600b8410161715620041d8575081810a62001dd8565b620041e48383620040ea565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562004219576200421962004051565b029392505050565b5f62002104838362004151565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200428757620042876200422e565b604052919050565b5f60208284031215620042a0575f80fd5b815167ffffffffffffffff80821115620042b8575f80fd5b818401915084601f830112620042cc575f80fd5b815181811115620042e157620042e16200422e565b620042f66020601f19601f840116016200425b565b91508082528560208285010111156200430d575f80fd5b6200432081602084016020860162003ad7565b50949350505050565b7f73746453746f726167652066696e642853746453746f72616765293a2050616381527f6b656420736c6f742e2057652063616e2774206669742076616c75652067726560208201527f61746572207468616e200000000000000000000000000000000000000000000060408201525f8251620043ae81604a85016020870162003ad7565b91909101604a0192915050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681525f8251620043f681600485016020870162003ad7565b919091016004019392505050565b808202811582820484141762001dd85762001dd862004051565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f8301126200445b575f80fd5b8151602067ffffffffffffffff8211156200447a576200447a6200422e565b8160051b6200448b8282016200425b565b9283528481018201928281019087851115620044a5575f80fd5b83870192505b84831015620044c657825182529183019190830190620044ab565b979650505050505050565b5f8060408385031215620044e3575f80fd5b825167ffffffffffffffff80821115620044fb575f80fd5b62004509868387016200444b565b935060208501519150808211156200451f575f80fd5b506200452e858286016200444b565b9150509250929050565b5f8162004549576200454962004051565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe608060405234801561000f575f80fd5b5061029e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063312f619f146100cb575b5f366060828061003984826101f3565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020818152604080832067ffffffffffffffff8516845282529182902091519395509193506100ad92909101905467ffffffffffffffff8082168352604082811c8216602085015260809290921c169082015260600190565b60405160208183030381529060405292505050915050805190602001f35b6101b16100d9366004610226565b6040805160608101825267ffffffffffffffff92831681525f602080830182815283850183815273ffffffffffffffffffffffffffffffffffffffff909816835282825284832096861683529590529190912090518154935194518316700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff95841668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951691909316179290921792909216919091179055565b005b73ffffffffffffffffffffffffffffffffffffffff811681146101d4575f80fd5b50565b803567ffffffffffffffff811681146101ee575f80fd5b919050565b5f8060408385031215610204575f80fd5b823561020f816101b3565b915061021d602084016101d7565b90509250929050565b5f805f60608486031215610238575f80fd5b8335610243816101b3565b9250610251602085016101d7565b915061025f604085016101d7565b9050925092509256fea2646970667358221220d3d2e39f1569d13205f1199323c8af40c8a0e67b2da6eb495b42f8590ab256ed64736f6c6343000816003360c060405234801562000010575f80fd5b5060405162003ecb38038062003ecb8339810160408190526200003391620002c2565b83838383838360128484818181818d6001600160a01b0381166200007057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200007b8162000191565b506001600160a01b038083166080528116620000aa57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e1906024015f604051808303815f87803b158015620000ef575f80fd5b505af115801562000102573d5f803e3d5ffd5b50505050505050506200011a620001e060201b60201c565b60ff168360ff16101562000141576040516301e9714b60e41b815260040160405180910390fd5b6200014e60068462000360565b6200015b90600a6200047b565b60a052506008915062000171905083826200051c565b5060096200018082826200051c565b5050505050505050505050620005e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000209575f80fd5b81516001600160401b0380821115620002265762000226620001e5565b604051601f8301601f19908116603f01168101908282118183101715620002515762000251620001e5565b81604052838152602092508660208588010111156200026e575f80fd5b5f91505b8382101562000291578582018301518183018401529082019062000272565b5f602085830101528094505050505092915050565b80516001600160a01b0381168114620002bd575f80fd5b919050565b5f805f8060808587031215620002d6575f80fd5b84516001600160401b0380821115620002ed575f80fd5b620002fb88838901620001f9565b9550602087015191508082111562000311575f80fd5b506200032087828801620001f9565b9350506200033160408601620002a6565b91506200034160608601620002a6565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156200037c576200037c6200034c565b92915050565b600181815b80851115620003c257815f1904821115620003a657620003a66200034c565b80851615620003b457918102915b93841c939080029062000387565b509250929050565b5f82620003da