@layerzerolabs/hyperliquid-composer
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid
1 lines • 304 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":"0x600c8054600160ff199182168117909255601f8054909116909117905560c06040526005608090815264757365724160d81b60a0526200003f90620000b9565b602680546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b60208201526200008690620000b9565b602780546001600160a01b0319166001600160a01b0392909216919091179055348015620000b2575f80fd5b5062000296565b5f620000c582620000cc565b5092915050565b5f8082604051602001620000e1919062000207565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200014b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000171919062000224565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001af908590879060040162000253565b5f604051808303815f87803b158015620001c7575f80fd5b505af1158015620001da573d5f803e3d5ffd5b50505050915091565b5f5b83811015620001ff578181015183820152602001620001e5565b50505f910152565b5f82516200021a818460208701620001e3565b9190910192915050565b5f6020828403121562000235575f80fd5b81516001600160a01b03811681146200024c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f825180604084015262000281816060850160208701620001e3565b601f01601f1916919091016060019392505050565b61ba0b80620002a45f395ff3fe608060405234801562000010575f80fd5b5060043610620001e0575f3560e01c8063a09e74301162000107578063c33d080d116200009f578063deb22e9a1162000077578063deb22e9a14620004cf578063e20c9f7114620004f0578063fa7626d414620004fa578063fad942fa1462000508575f80fd5b8063c33d080d1462000457578063c9279a7414620004a4578063cb1a295f14620004ae575f80fd5b8063b5508aa911620000df578063b5508aa914620003fe578063ba414fa61462000408578063ba8726791462000423578063bb641b3e146200042d575f80fd5b8063a09e743014620003c9578063a9783f6f14620003ea578063b0464fdc14620003f4575f80fd5b806366d9a9a0116200017b5780637ecd9ac311620001535780637ecd9ac3146200035257806385226c81146200036e578063916a17c614620003875780639b5215f614620003a0575f80fd5b806366d9a9a014620002a35780637645f2b114620002bc57806376e86e7214620002c6575f80fd5b80632ade388011620001bb5780632ade38801462000234578063318f405a146200024d5780633e5e3c23146200028f5780633f7286f41462000299575f80fd5b80630a9254e414620001e4578063176e619e14620001f05780631ed7831c146200021b575b5f80fd5b620001ee62000512565b005b602454620002019063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6200022562000d87565b60405162000212919062003a6e565b6200023e62000df6565b60405162000212919062003b1a565b6200026973f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000212565b6200022562000f4b565b6200022562000fb8565b620002ad62001025565b60405162000212919062003c84565b620001ee620011aa565b602254602354620003139173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845267ffffffffffffffff909216602084015260070b9082015260600162000212565b6200026973333333333333333333333333333333333333333381565b620003786200146e565b60405162000212919062003d2d565b6200039162001543565b60405162000212919062003db1565b6024546200026990640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b602554620002699073ffffffffffffffffffffffffffffffffffffffff1681565b620001ee6200164a565b62000391620017ec565b62000378620018f3565b62000412620019c8565b604051901515815260200162000212565b6200026961080181565b6200043d670de0b6b3a764000081565b60405167ffffffffffffffff909116815260200162000212565b602054602154620003139173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b62000201619ce181565b602754620002699073ffffffffffffffffffffffffffffffffffffffff1681565b602654620002699073ffffffffffffffffffffffffffffffffffffffff1681565b6200022562001a9c565b601f54620004129060ff1681565b620001ee62001b09565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af1925050508015620005ee575060408051601f3d908101601f19168201909252620005eb9181019062003e4f565b60015b6200069857620006176040518060600160405280603e81526020016200b998603e913962001d31565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b1580156200067b575f80fd5b505af11580156200068e573d5f803e3d5ffd5b505050506200069a565b505b6040518060600160405280620006b26104cf62001da9565b73ffffffffffffffffffffffffffffffffffffffff90811682526104cf602080840191909152600c6040938401528351815485830151919093167fffffffff00000000000000000000000000000000000000000000000000000000938416177401000000000000000000000000000000000000000067ffffffffffffffff9283160217825593830151602180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000908116929096169190911790558251606081018452732222222222222222222222222222222222222222815261045191810191909152600890830181905260228054909216750451222222222222222222222222222222222222222217909155602380549093161790915551737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c7829061080190620007f790620039d6565b604051809103905ff08015801562000811573d5f803e3d5ffd5b5073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b81526004016200086292919062003e67565b5f604051808303815f87803b1580156200087a575f80fd5b505af11580156200088d573d5f803e3d5ffd5b50506020546040517f312f619f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b1580156200092a575f80fd5b505af11580156200093d573d5f803e3d5ffd5b50506022546040517f312f619f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b158015620009da575f80fd5b505af1158015620009ed573d5f803e3d5ffd5b5050505073f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162000a1590620039e4565b62000a2292919062003e9f565b604051809103905ff08015801562000a3c573d5f803e3d5ffd5b50602480547fffffffffffffffff0000000000000000000000000000000000000000ffffffff1664010000000073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905560205460215460405173f9e1815f151024bde4b7c10bac10e8ba9f6b53e19593909404909216927401000000000000000000000000000000000000000090910467ffffffffffffffff169160070b9062000ae590620039f2565b73ffffffffffffffffffffffffffffffffffffffff948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562000b3c573d5f803e3d5ffd5b50602580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602454604080517f5e280f11000000000000000000000000000000000000000000000000000000008152905164010000000090920490921691635e280f119160048083019260209291908290030181865afa15801562000be0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c06919062003f49565b73ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c4f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c75919062003f7e565b602480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911781556040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e1600482015268056bc75e2d6310000091810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801562000d32575f80fd5b505af115801562000d45573d5f803e3d5ffd5b505060245460255462000d85935073ffffffffffffffffffffffffffffffffffffffff6401000000009092048216925016670de0b6b3a764000062001dd0565b565b6060601680548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562000f42575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000f2a578382905f5260205f2001805462000e989062003fa3565b80601f016020809104026020016040519081016040528092919081815260200182805462000ec69062003fa3565b801562000f155780601f1062000eeb5761010080835404028352916020019162000f15565b820191905f5260205f20905b81548152906001019060200180831162000ef757829003601f168201915b50505050508152602001906001019062000e78565b50505050815250508152602001906001019062000e19565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562000f42578382905f5260205f2090600202016040518060400160405290815f820180546200107b9062003fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054620010a99062003fa3565b8015620010f85780601f10620010ce57610100808354040283529160200191620010f8565b820191905f5260205f20905b815481529060010190602001808311620010da57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200119157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200113d5790505b5050505050815250508152602001906001019062001048565b604080516020602482018190525f6044808401919091528351808403909101815260649092018352810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ed4895a0000000000000000000000000000000000000000000000000000000017905260255491517f61ebcf120000000000000000000000000000000000000000000000000000000081529091737109709ecfa91a80626ff3989d68f67f5b1dd12d916361ebcf12916200128491859173ffffffffffffffffffffffffffffffffffffffff169060040162003ff6565b5f604051808303815f87803b1580156200129c575f80fd5b505af1158015620012af573d5f803e3d5ffd5b50506040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156200132a575f80fd5b505af11580156200133d573d5f803e3d5ffd5b5050602554602480546040517fd0a1026000000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff90811660048301525f92820183905260a0604483015260a4820183905233606483015260c0608483015260c48201929092529116925063d0a10260915060e4015b5f604051808303815f87803b158015620013e3575f80fd5b505af1158015620013f6573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001454575f80fd5b505af115801562001467573d5f803e3d5ffd5b5050505050565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562000f42578382905f5260205f20018054620014b19062003fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014df9062003fa3565b80156200152e5780601f1062001504576101008083540402835291602001916200152e565b820191905f5260205f20905b8154815290600101906020018083116200151057829003601f168201915b50505050508152602001906001019062001491565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562000f42575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200163157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620015dd5790505b5050505050815250508152602001906001019062001566565b6040805173f9e1815f151024bde4b7c10bac10e8ba9f6b53e160248201523060448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fefa9309d0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906200171c9084906004016200402f565b5f604051808303815f87803b15801562001734575f80fd5b505af115801562001747573d5f803e3d5ffd5b5050602554602480546040517fd0a1026000000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff90811660048301525f92820183905260a0604483015260a4820183905233606483015260c0608483015260c48201929092529116925063d0a10260915060e4015f604051808303815f87803b15801562001454575f80fd5b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562000f42575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015620018da57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620018865790505b505050505081525050815260200190600101906200180f565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562000f42578382905f5260205f20018054620019369062003fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054620019649062003fa3565b8015620019b35780601f106200198957610100808354040283529160200191620019b3565b820191905f5260205f20905b8154815290600101906020018083116200199557829003601f168201915b50505050508152602001906001019062001916565b6008545f9060ff1615620019e0575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562001a6f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a95919062003e4f565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000dec57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000dc0575050505050905090565b602480546040805173ffffffffffffffffffffffffffffffffffffffff6401000000009093048316938101939093525f60448085019190915281518085039091018152606490930181526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f86fee0c00000000000000000000000000000000000000000000000000000000017905260255490517f61ebcf12000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d926361ebcf129262001bf4928692919091169060040162003ff6565b5f604051808303815f87803b15801562001c0c575f80fd5b505af115801562001c1f573d5f803e3d5ffd5b50506040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b15801562001c9a575f80fd5b505af115801562001cad573d5f803e3d5ffd5b50506025546040517fd0a102600000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905260a0604483015260a4820181905233606483015260c0608483015260c482015273ffffffffffffffffffffffffffffffffffffffff909116925063d0a10260915060e401620013cb565b62001da68160405160240162001d4891906200402f565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262001de3565b50565b5f62001dca8273200000000000000000000000000000000000000062004070565b92915050565b62001dde8383835f62001dee565b505050565b62001da68162002092565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f9287169162001e7e9162004086565b5f60405180830381855afa9150503d805f811462001eb8576040519150601f19603f3d011682016040523d82523d5f602084013e62001ebd565b606091505b509150505f8180602001905181019062001ed8919062003e4f565b905062001f2b8462001f248762001f1d7f70a082310000000000000000000000000000000000000000000000000000000062001f16600d8d620020b1565b90620020fd565b9062002135565b906200216d565b82156200208a5760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f9173ffffffffffffffffffffffffffffffffffffffff89169162001fb0919062004086565b5f60405180830381855afa9150503d805f811462001fea576040519150601f19603f3d011682016040523d82523d5f602084013e62001fef565b606091505b509150505f818060200190518101906200200a919062003e4f565b9050828610156200203557620020218684620040a3565b6200202d9082620040a3565b905062002050565b620020418387620040a3565b6200204d908262004070565b90505b620020878162001f247f18160ddd0000000000000000000000000000000000000000000000000000000062001f16600d8d620020b1565b50505b505050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6004820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f825b9392505050565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f82620020f6565b6001808301805491820181555f9081526020812073ffffffffffffffffffffffffffffffffffffffff841692019190915582620020f6565b6200217982826200217d565b5050565b60048201546002830154600384015473ffffffffffffffffffffffffffffffffffffffff9092169160e09190911b905f620021b88662002737565b73ffffffffffffffffffffffffffffffffffffffff85165f908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051939450926200221d918591879101620040b9565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff166200225b5762002259865f6200284a565b505b73ffffffffffffffffffffffffffffffffffffffff84165f908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190918391620022c0918691889101620040b9565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f81600201548260010154620022fc919062004070565b111562002434575f816002015482600101546200231a919062004070565b6200232890610100620040a3565b6200233590600262004213565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015620023a3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620023cc919081019062004281565b604051602001620023de91906200431b565b6040516020818303038152906040529062002431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200242891906200402f565b60405180910390fd5b50505b80546040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101919091525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620024bd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620024e3919062003e4f565b60018381015460028501549293505f92908101610100039190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b1983169089901b1783546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152602481019190915260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b158015620025b7575f80fd5b505af1158015620025ca573d5f803e3d5ffd5b505050505f80620025db8b6200285f565b91509150811580620025ed5750898114155b156200271f5784546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b166004820152602481019190915260448101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b1580156200267d575f80fd5b505af115801562002690573d5f803e3d5ffd5b50506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a2046616960448201527f6c656420746f2077726974652076616c75652e0000000000000000000000000060648201526084019150620024289050565b6200272a8b6200293d565b5050505050505050505050565b60608160070180546200274a9062003fa3565b90505f03620027b05762001dca82600101805480602002602001604051908101604052809291908181526020018280548015620027a557602002820191905f5260205f20905b81548152602001906001019080831162002790575b505050505062002948565b816007018054620027c19062003fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054620027ef9062003fa3565b80156200283e5780601f1062002814576101008083540402835291602001916200283e565b820191905f5260205f20905b8154815290600101906020018083116200282057829003601f168201915b50505050509050919050565b5f620028578383620029ec565b549392505050565b60028101545f908190819060e01b620028788562002737565b6040516020016200288b929190620043ad565b60408051601f198184030181529082905260048601549092505f91829173ffffffffffffffffffffffffffffffffffffffff1690620028cc90859062004086565b5f60405180830381855afa9150503d805f811462002906576040519150601f19603f3d011682016040523d82523d5f602084013e6200290b565b606091505b50915091505f6200292f8288600301546020620029299190620043f6565b62003353565b929792965091945050505050565b62001da681620033e6565b60605f825160206200295b9190620043f6565b67ffffffffffffffff81111562002976576200297662004220565b6040519080825280601f01601f191660200182016040528015620029a1576020820181803683370190505b5090505f5b8351811015620029e5575f848281518110620029c657620029c662004410565b60209081029190910181015183820285019091015250600101620029a6565b5092915050565b6004820154600283015460038401545f9273ffffffffffffffffffffffffffffffffffffffff169160e01b908362002a248762002737565b73ffffffffffffffffffffffffffffffffffffffff85165f908152602089815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519394509262002a89918591879101620040b9565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff161562002b5f57851562002acc5762002acc87620033e6565b73ffffffffffffffffffffffffffffffffffffffff84165f908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162002b30918591879101620040b9565b6040516020818303038152906040528051906020012081526020019081526020015f2094505050505062001dca565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663266cf1096040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002bc7575f80fd5b505af115801562002bda573d5f803e3d5ffd5b505050505f62002bea886200285f565b6040517f65bc948100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201529092505f9150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024015f604051808303815f875af115801562002c6d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002c969190810190620044c3565b50905080515f0362002d2d57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002428565b80515b5f62002d3c826200452a565b915081106200318e575f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663667f9d708985858151811062002d9a5762002d9a62004410565b60200260200101516040518363ffffffff1660e01b815260040162002de192919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602060405180830381865afa15801562002dfd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e23919062003e4f565b90508062002e9a577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58884848151811062002e625762002e6262004410565b6020908102919091018101516040805173ffffffffffffffffffffffffffffffffffffffff9094168452918301520160405180910390a15b62002ec28b84848151811062002eb45762002eb462004410565b60200260200101516200348b565b62002ece575062002d30565b60068b01545f90819060ff161562002f22575f62002f098e87878151811062002efb5762002efb62004410565b602002602001015162003702565b909450925090508062002f20575050505062002d30565b505b6001828201610100031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b8316811c86811462002f66575050505062002d30565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162002f9e929190620040b9565b6040516020818303038152906040528051906020012089898151811062002fc95762002fc962004410565b6020908102919091018101516040805173ffffffffffffffffffffffffffffffffffffffff90961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1604051806080016040528087878151811062003052576200305262004410565b60200260200101515f1c8152602001848152602001838152602001600115158152508e5f015f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8a8c60405160200162003115929190620040b9565b60408051808303601f1901815291815281516020928301208352828201939093529082015f2083518155908301516001820155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055505050505b5073ffffffffffffffffffffffffffffffffffffffff86165f90815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008916845282528083209051909291620031f3918791899101620040b9565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620032ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162002428565b8715620032be57620032be89620033e6565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260208a815260408083207fffffffff00000000000000000000000000000000000000000000000000000000891684528252808320905190929162003322918791899101620040b9565b6040516020818303038152906040528051906020012081526020019081526020015f20965050505050505092915050565b5f805f6020855111620033685784516200336b565b60205b90505f5b81811015620033dc5762003385816008620043f6565b8662003392838862004070565b81518110620033a557620033a562004410565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217916001016200336f565b5090949350505050565b6004810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562003449600182015f62003a00565b5f600382018190556006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905562001da690600783019062003a1d565b6004828101546040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018290525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200351c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003542919062003e4f565b90505f8062003551866200285f565b90925090505f811562003565575f62003587565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6004888101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116918101919091526024810188905260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b1580156200361a575f80fd5b505af11580156200362d573d5f803e3d5ffd5b505050505f6200363d886200285f565b60048a8101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018a905260448101889052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506370ca10bb906064015f604051808303815f87803b158015620036d1575f80fd5b505af1158015620036e4573d5f803e3d5ffd5b50505050838015620036f65750808314155b98975050505050505050565b6004828101546040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018290525f90819081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003797573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620037bd919062003e4f565b90505f80620037cf88886001620038a9565b915091505f80620037e28a8a5f620038a9565b60048c8101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191909152602481018c9052604481018890529193509150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003877575f80fd5b505af11580156200388a573d5f803e3d5ffd5b50505050838015620038995750815b9a92995097509095505050505050565b5f805f5b610100811015620039c6575f84620038c9576001821b620038db565b620038d68260ff620040a3565b6001901b5b6004888101546040517f70ca10bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116918101919091526024810188905260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b1580156200396e575f80fd5b505af115801562003981573d5f803e3d5ffd5b505050505f8062003992896200285f565b91509150818015620039a357508015155b15620039ba576001849550955050505050620039ce565b505050600101620038ad565b505f80915091505b935093915050565b6102bb806200456283390190565b613f13806200481d83390190565b613268806200873083390190565b5080545f8255905f5260205f209081019062001da6919062003a54565b50805462003a2b9062003fa3565b5f825580601f1062003a3b575050565b601f0160209004905f5260205f209081019062001da691905b5b8082111562003a6a575f815560010162003a55565b5090565b602080825282518282018190525f9190848201906040850190845b8181101562003abd57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162003a89565b50909695505050505050565b5f5b8381101562003ae557818101518382015260200162003acb565b50505f910152565b5f815180845262003b0681602086016020860162003ac9565b601f01601f19169290920160200192915050565b602080825282518282018190525f919060409081850190600581811b87018401888601875b8481101562003c17577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a84030186528151805173ffffffffffffffffffffffffffffffffffffffff168452880151888401889052805188850181905290890190606081871b8601810191908601905f5b8181101562003c00577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088850301835262003bed84865162003aed565b948d01949350918c019160010162003bb0565b505050968901969350509087019060010162003b3f565b50909998505050505050505050565b5f815180845260208085019450602084015f5b8381101562003c795781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162003c39565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101562003d1f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151805187855262003cf08886018262003aed565b91890151858303868b015291905062003d0a818362003c26565b96890196945050509086019060010162003cab565b509098975050505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101562003da4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262003d9185835162003aed565b9450928501929085019060010162003d54565b5092979650505050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101562003d1f578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905262003e3b8785018262003c26565b958801959350509086019060010162003dd8565b5f6020828403121562003e60575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f62003e97604083018462003aed565b949350505050565b608081525f62003edc60808301600481527f7465737400000000000000000000000000000000000000000000000000000000602082015260400190565b828103602084015262003f1981600481527f7465737400000000000000000000000000000000000000000000000000000000602082015260400190565b91505073ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509392505050565b5f6020828403121562003f5a575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114620020f6575f80fd5b5f6020828403121562003f8f575f80fd5b815163ffffffff81168114620020f6575f80fd5b600181811c9082168062003fb857607f821691505b60208210810362003ff0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b604081525f6200400a604083018562003aed565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b602081525f620020f6602083018462003aed565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111562001dca5762001dca62004043565b5f82516200409981846020870162003ac9565b9190910192915050565b8181038181111562001dca5762001dca62004043565b5f8351620040cc81846020880162003ac9565b9190910191825250602001919050565b600181815b808511156200413b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156200411f576200411f62004043565b808516156200412d57918102915b93841c9390800290620040e1565b509250929050565b5f82620041535750600162001dca565b816200416157505f62001dca565b81600181146200417a57600281146200418557620041a5565b600191505062001dca565b60ff84111562004199576200419962004043565b50506001821b62001dca565b5060208310610133831016604e8410600b8410161715620041ca575081810a62001dca565b620041d68383620040dc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156200420b576200420b62004043565b029392505050565b5f620020f6838362004143565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562004279576200427962004220565b604052919050565b5f6020828403121562004292575f80fd5b815167ffffffffffffffff80821115620042aa575f80fd5b818401915084601f830112620042be575f80fd5b815181811115620042d357620042d362004220565b620042e86020601f19601f840116016200424d565b9150808252856020828501011115620042ff575f80fd5b6200431281602084016020860162003ac9565b50949350505050565b7f73746453746f726167652066696e642853746453746f72616765293a2050616381527f6b656420736c6f742e2057652063616e2774206669742076616c75652067726560208201527f61746572207468616e200000000000000000000000000000000000000000000060408201525f8251620043a081604a85016020870162003ac9565b91909101604a0192915050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681525f8251620043e881600485016020870162003ac9565b919091016004019392505050565b808202811582820484141762001dca5762001dca62004043565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f8301126200444d575f80fd5b8151602067ffffffffffffffff8211156200446c576200446c62004220565b8160051b6200447d8282016200424d565b928352848101820192828101908785111562004497575f80fd5b83870192505b84831015620044b8578251825291830191908301906200449d565b979650505050505050565b5f8060408385031215620044d5575f80fd5b825167ffffffffffffffff80821115620044ed575f80fd5b620044fb868387016200443d565b9350602085015191508082111562004511575f80fd5b5062004520858286016200443d565b9150509250929050565b5f816200453b576200453b62004043565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe608060405234801561000f575f80fd5b5061029e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063312f619f146100cb575b5f366060828061003984826101f3565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020818152604080832067ffffffffffffffff8516845282529182902091519395509193506100ad92909101905467ffffffffffffffff8082168352604082811c8216602085015260809290921c169082015260600190565b60405160208183030381529060405292505050915050805190602001f35b6101b16100d9366004610226565b6040805160608101825267ffffffffffffffff92831681525f602080830182815283850183815273ffffffffffffffffffffffffffffffffffffffff909816835282825284832096861683529590529190912090518154935194518316700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff95841668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951691909316179290921792909216919091179055565b005b73ffffffffffffffffffffffffffffffffffffffff811681146101d4575f80fd5b50565b803567ffffffffffffffff811681146101ee575f80fd5b919050565b5f8060408385031215610204575f80fd5b823561020f816101b3565b915061021d602084016101d7565b90509250929050565b5f805f60608486031215610238575f80fd5b8335610243816101b3565b9250610251602085016101d7565b915061025f604085016101d7565b9050925092509256fea2646970667358221220d3d2e39f1569d13205f1199323c8af40c8a0e67b2da6eb495b42f8590ab256ed64736f6c6343000816003360c060405234801562000010575f80fd5b5060405162003f1338038062003f138339810160408190526200003391620002c2565b83838383838360128484818181818d6001600160a01b0381166200007057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200007b8162000191565b506001600160a01b038083166080528116620000aa57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e1906024015f604051808303815f87803b158015620000ef575f80fd5b505af115801562000102573d5f803e3d5ffd5b50505050505050506200011a620001e060201b60201c565b60ff168360ff16101562000141576040516301e9714b60e41b815260040160405180910390fd5b6200014e60068462000360565b6200015b90600a6200047b565b60a052506008915062000171905083826200051c565b5060096200018082826200051c565b5050505050505050505050620005e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000209575f80fd5b81516001600160401b0380821115620002265762000226620001e5565b604051601f8301601f19908116603f01168101908282118183101715620002515762000251620001e5565b81604052838152602092508660208588010111156200026e575f80fd5b5f91505b8382101562000291578582018301518183018401529082019062000272565b5f602085830101528094505050505092915050565b80516001600160a01b0381168114620002bd575f80fd5b919050565b5f805f8060808587031215620002d6575f80fd5b84516001600160401b0380821115620002ed575f80fd5b620002fb88838901620001f9565b9550602087015191508082111562000311575f80fd5b506200032087828801620001f9565b9350506200033160408601620002a6565b91506200034160608601620002a6565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156200037c576200037c6200034c565b92915050565b600181815b80851115620003c257815f1904821115620003a657620003a66200034c565b80851615620003b457918102915b93841c939080029062000387565b509250929050565b5f82620003da575060016200037c565b81620003