UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 958 kB
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"_WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"deployAndApprovePosm","inputs":[{"name":"poolManager","type":"address","internalType":"contract IPoolManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPermit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookModifyLiquidities","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookSavesDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"positionDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"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_fuzz_unsubscribe_with_gas_limit","inputs":[{"name":"gasLimit","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_mint_subscribe","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_mint_subscribe_increase","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_notifyBurn_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_notifyModifyLiquidity_args","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_notifyModifyLiquidity_selfDestruct_revert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_notifyModifyLiquidity_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_notifyModifyLiquidiy_wraps_revert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_safeTransferFrom_unsubscribes","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_safeTransferFrom_unsubscribes_selfDestruct","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_safeTransferFrom_unsubscribes_withData","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_revert_empty","inputs":[{"name":"_subscriber","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_revertsWhenNotApproved","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_revertsWithAlreadySubscribed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_revertsWithEmptyPositionConfig","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_reverts_PoolManagerMustBeLocked","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_withData","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_subscribe_wraps_revert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_transferFrom_reverts_PoolManagerMustBeLocked","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_transferFrom_unsubscribes","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_transferFrom_unsubscribes_selfDestruct","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unsubscribe_isSuccessfulWithBadSubscriber","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unsubscribe_revertsWhenNotSubscribed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unsubscribe_reverts_PoolManagerMustBeLocked","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unsubscribe_selfDestructed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unsubscribe_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unsubscribe_twice_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"0x600c805460ff199081166001908117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e0819052602080546378ffff8865ffffffffffff19918216811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c0819052602680549093168417909255602755602880546001600160a01b0319908116909217905560428054909116600e17905560438054614000600160a11b036001600160a81b031990911617905561011a904290610355565b604555604b80546001600160a01b03191661050017905560405161013d90610347565b604051809103905ff080158015610156573d5f803e3d5ffd5b50604c80546001600160a01b03929092166001600160a01b0319928316179055604e8054821661abcd17905560508054909116610f80179055604080518082019091526005815264414c49434560d81b60208201526101b490610228565b605c80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260038152622127a160e91b60208201526101f790610228565b605d80546001600160a01b0319166001600160a01b0392909216919091179055348015610222575f80fd5b50610401565b5f61023282610239565b5092915050565b5f808260405160200161024c919061037a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156102b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d99190610390565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189061031590859087906004016103bd565b5f604051808303815f87803b15801561032c575f80fd5b505af115801561033e573d5f803e3d5ffd5b50505050915091565b61121e806202d4cd83390190565b8082018082111561037457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82518060208501845e5f920191825250919050565b5f602082840312156103a0575f80fd5b81516001600160a01b03811681146103b6575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6202d0bd80620004105f395ff3fe6080604052600436106200038e575f3560e01c806385226c8111620001d6578063bbad9bd41162000106578063db1d5ccb116200009e578063edf77a991162000076578063edf77a991462000997578063f057d20d14620009ae578063f8ccbf4714620009d2578063fa7626d41462000a05575f80fd5b8063db1d5ccb1462000952578063e20c9f711462000969578063ec77c7431462000980575f80fd5b8063c9ec187211620000de578063c9ec187214620008f6578063cb4b6c8d146200090d578063cb6953901462000924578063cc30b32c146200093b575f80fd5b8063bbad9bd414620008b1578063c040622614620008c8578063c7b8e15d14620008df575f80fd5b8063b0464fdc116200017a578063b624a53e1162000152578063b624a53e1462000844578063b99b7a15146200085b578063ba414fa61462000872578063bba91984146200089a575f80fd5b8063b0464fdc14620007a9578063b1a73b8a14620007c0578063b5508aa9146200082d575f80fd5b806393e3108611620001ae57806393e310861462000764578063a0a14cbf146200077b578063a53edfcb1462000792575f80fd5b806385226c8114620006e9578063916a17c6146200070f57806393ad73ed1462000735575f80fd5b80633f7286f411620002be578063542524dd116200025657806363e8f728116200022e57806363e8f728146200066757806366b01983146200069557806366d9a9a014620006ac57806367382c0514620006d2575f80fd5b8063542524dd14620006225780635aff817814620006395780635b945d611462000650575f80fd5b80634b99bacd11620002965780634b99bacd14620005c6578063503050ea14620005dd57806350f6587814620005f457806351a44dd5146200060b575f80fd5b80633f7286f4146200057457806349ab93d9146200058b5780634a55f00114620005a2575f80fd5b8063106d023111620003325780631ed7831c116200030a5780631ed7831c14620004b95780632ade388014620004df57806339cd201314620005055780633e5e3c23146200055d575f80fd5b8063106d02311462000433578063178d59a2146200048b5780631a9c863314620004a2575f80fd5b806307719b71116200036657806307719b7114620003ee57806308fa6fee14620004055780630a9254e4146200041c575f80fd5b806303ef31f6146200039a5780630615b5cf14620003c057806306b46ffd14620003d7575f80fd5b366200039657005b5f80fd5b348015620003a6575f80fd5b50620003be620003b83660046200d6d9565b62000a20565b005b348015620003cc575f80fd5b50620003be62000a38565b348015620003e3575f80fd5b50620003be62000c20565b348015620003fa575f80fd5b50620003be620011c7565b34801562000411575f80fd5b50620003be620015ad565b34801562000428575f80fd5b50620003be62001cd1565b3480156200043f575f80fd5b50604754620004619073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801562000497575f80fd5b50620003be62002535565b348015620004ae575f80fd5b50620003be62002bc7565b348015620004c5575f80fd5b50620004d0620031cc565b6040516200048291906200d6f7565b348015620004eb575f80fd5b50620004f66200323b565b6040516200048291906200d79d565b34801562000511575f80fd5b506023546024546025546200053492600281810b936301000000909204900b9184565b60408051600295860b81529390940b602084015292820152606081019190915260800162000482565b34801562000569575f80fd5b50620004d062003390565b34801562000580575f80fd5b50620004d0620033fd565b34801562000597575f80fd5b50620003be6200346a565b348015620005ae575f80fd5b50620003be620005c03660046200d8b5565b62003998565b348015620005d2575f80fd5b50620003be620040df565b348015620005e9575f80fd5b50620003be620046c9565b34801562000600575f80fd5b50620003be62004d5e565b34801562000617575f80fd5b50620003be620052bc565b3480156200062e575f80fd5b506200046162005943565b34801562000645575f80fd5b50620003be62005967565b3480156200065c575f80fd5b50620003be62005f53565b34801562000673575f80fd5b50604d54620004619073ffffffffffffffffffffffffffffffffffffffff1681565b348015620006a1575f80fd5b50620003be6200640a565b348015620006b8575f80fd5b50620006c3620067f0565b6040516200048291906200d93c565b348015620006de575f80fd5b50620003be62006975565b348015620006f5575f80fd5b506200070062006a90565b6040516200048291906200d9de565b3480156200071b575f80fd5b506200072662006b65565b6040516200048291906200da57565b34801562000741575f80fd5b506020546021546022546200053492600281810b936301000000909204900b9184565b34801562000770575f80fd5b50620003be62006c6c565b34801562000787575f80fd5b50620003be62007064565b3480156200079e575f80fd5b50620003be62007520565b348015620007b5575f80fd5b506200072662007adc565b348015620007cc575f80fd5b50602654602754602854620007f99260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600162000482565b34801562000839575f80fd5b506200070062007be3565b34801562000850575f80fd5b50620003be62007cb8565b34801562000867575f80fd5b50620003be62007e50565b3480156200087e575f80fd5b5062000889620082dd565b604051901515815260200162000482565b348015620008a6575f80fd5b50620003be620083b1565b348015620008bd575f80fd5b50620003be62008c07565b348015620008d4575f80fd5b5062000461620091eb565b348015620008eb575f80fd5b5062000461620092b5565b34801562000902575f80fd5b5062000461620092c7565b34801562000919575f80fd5b50620003be620092d7565b34801562000930575f80fd5b50620003be620094e9565b34801562000947575f80fd5b50620003be6200964d565b3480156200095e575f80fd5b50620003be62009d14565b34801562000975575f80fd5b50620004d06200a560565b3480156200098c575f80fd5b50620003be6200a5cd565b348015620009a3575f80fd5b50620003be6200aa84565b348015620009ba575f80fd5b50620003be620009cc3660046200d6d9565b6200add8565b348015620009de575f80fd5b50604354620008899074010000000000000000000000000000000000000000900460ff1681565b34801562000a11575f80fd5b50601f54620008899060ff1681565b62000a2b816200b288565b62000a356200b433565b50565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa15801562000aa6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000acc91906200dafd565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906064015b5f604051808303815f87803b15801562000b61575f80fd5b505af115801562000b74573d5f803e3d5ffd5b505060445460545473ffffffffffffffffffffffffffffffffffffffff9182169350632b9261de92508491165f5b6040519080825280601f01601f19166020018201604052801562000bcd576020820181803683370190505b506040518463ffffffff1660e01b815260040162000bee939291906200db42565b5f604051808303815f87803b15801562000c06575f80fd5b505af115801562000c19573d5f803e3d5ffd5b5050505050565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa15801562000c8e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000cb491906200dafd565b6040805161010081018252605e5473ffffffffffffffffffffffffffffffffffffffff9081166060808401918252605f54808416608086015262ffffff7401000000000000000000000000000000000000000082041660a0860152770100000000000000000000000000000000000000000000009004600290810b60c0860152905490921660e0840152825260615480820b602084015263010000009004900b9181019190915290915062000da190678ac7230489e80000305f5b6040519080825280601f01601f19166020018201604052801562000d9a576020820181803683370190505b506200b47d565b604080517f2b9261de0000000000000000000000000000000000000000000000000000000060208201523091810191909152606081018290525f906080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815261010083018252605e5473ffffffffffffffffffffffffffffffffffffffff9081166060808601918252605f54808416608088015262ffffff7401000000000000000000000000000000000000000082041660a0880152770100000000000000000000000000000000000000000000009004600290810b60c0880152905490921660e0860152845260615480820b602086015263010000009004900b9183019190915291505f9062000ec890678ac7230489e8000030856200b521565b60448054605b546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101889052939450169163095ea7b391015b5f604051808303815f87803b15801562000f3e575f80fd5b505af115801562000f51573d5f803e3d5ffd5b5050605b5460408051600480825260248083018452602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167fd4b05fe000000000000000000000000000000000000000000000000000000000179091528551938452838301865290830180519091167fa9e35b2f000000000000000000000000000000000000000000000000000000001790529251737109709ecfa91a80626ff3989d68f67f5b1dd12d965063f28dceb395507f90bfb8650000000000000000000000000000000000000000000000000000000094620010769473ffffffffffffffffffffffffffffffffffffffff91909116937f259982e5000000000000000000000000000000000000000000000000000000009390929091016200db78565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001108916004016200dbe4565b5f604051808303815f87803b15801562001120575f80fd5b505af115801562001133573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f925062001193918591906004016200dbf8565b5f604051808303815f87803b158015620011ab575f80fd5b505af1158015620011be573d5f803e3d5ffd5b50505050505050565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa15801562001235573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200125b91906200dafd565b604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605854831660e085015290835260595480820b602085015263010000009004900b92820192909252605c549293506200132292909168056bc75e2d6310000091165f62000d6f565b605c546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156200139f575f80fd5b505af1158015620013b2573d5f803e3d5ffd5b5050604480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116935063095ea7b39250015f604051808303815f87803b15801562001425575f80fd5b505af115801562001438573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620014a4575f80fd5b505af1158015620014b7573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f237e6c28000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b1580156200153e575f80fd5b505af115801562001551573d5f803e3d5ffd5b50506044546040517fad0b27fb0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116925063ad0b27fb915060240162000bee565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa1580156200161b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200164191906200dafd565b604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605854831660e085015290835260595480820b602085015263010000009004900b92820192909252605c549293506200170892909168056bc75e2d6310000091165f62000d6f565b605c546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001785575f80fd5b505af115801562001798573d5f803e3d5ffd5b5050604480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116935063095ea7b39250015f604051808303815f87803b1580156200180b575f80fd5b505af11580156200181e573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200188a575f80fd5b505af11580156200189d573d5f803e3d5ffd5b5050604454605454604080515f815260208101918290527f2b9261de0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9283169450632b9261de93506200190c9286921690602481016200db42565b5f604051808303815f87803b15801562001924575f80fd5b505af115801562001937573d5f803e3d5ffd5b50506044546040517f89097a6a00000000000000000000000000000000000000000000000000000000815260048101859052620019e89350620019e0925073ffffffffffffffffffffffffffffffffffffffff909116906389097a6a906024015b602060405180830381865afa158015620019b4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019da91906200dafd565b60ff1690565b60016200b54c565b6044546040517f16a241310000000000000000000000000000000000000000000000000000000081526004810183905262001a9f9173ffffffffffffffffffffffffffffffffffffffff16906316a24131906024015b602060405180830381865afa15801562001a5a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a8091906200dc1b565b60545473ffffffffffffffffffffffffffffffffffffffff166200b5cc565b605454604080515f815260208101918290527fb4d6c78200000000000000000000000000000000000000000000000000000000909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b4d6c7829162001b179173ffffffffffffffffffffffffffffffffffffffff1690602481016200dc39565b5f604051808303815f87803b15801562001b2f575f80fd5b505af115801562001b42573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f7c402b21000000000000000000000000000000000000000000000000000000006004820152678ac7230489e800009250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e0906024015f604051808303815f87803b15801562001bd3575f80fd5b505af115801562001be6573d5f803e3d5ffd5b5050604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c085015260585490921660e0840152825260595480820b602084015263010000009004900b9181019190915262001ccd9250849150835f5b6040519080825280601f01601f19166020018201604052801562001cc6576020820181803683370190505b506200b63b565b5050565b62001cdb6200b64a565b62001ce56200bc4e565b5050602954602a54604a5462001d299273ffffffffffffffffffffffffffffffffffffffff9081169281169116610bb86c010000000000000000000000006200bcd5565b508051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000091909316029190911790556080909201516038805490931690821617909155602b5462001e36911662000a20565b60445460405173ffffffffffffffffffffffffffffffffffffffff9091169062001e60906200d5c9565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801562001e97573d5f803e3d5ffd5b50605480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560445460405191169062001eed906200d5d7565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801562001f24573d5f803e3d5ffd5b50605580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560445460405191169062001f7a906200d5e5565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801562001fb1573d5f803e3d5ffd5b50605a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556040805161010081018252603654841660608201818152603754808716608085018190527401000000000000000000000000000000000000000080830462ffffff90811660a088018190527701000000000000000000000000000000000000000000000094859004600281900b60c08a0152603854909b1660e089018190529588527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed4602089015261012c97890197909752605680548a16909617909555605780547fffffffffffffffffff0000000000000000000000000000000000000000000000169092179502949094177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1696909216909102949094179055605880549092169092179055605980547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001664012cfffed4179055515f906200215b906200d5f3565b604051809103905ff08015801562002175573d5f803e3d5ffd5b5090505f61080090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663b4d6c782828473ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b81526004016200220e9291906200dc39565b5f604051808303815f87803b15801562002226575f80fd5b505af115801562002239573d5f803e3d5ffd5b5050605b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8581169182179092556044546040517fef4d197400000000000000000000000000000000000000000000000000000000815292166004830152925063ef4d197491506024015f604051808303815f87803b158015620022d3575f80fd5b505af1158015620022e6573d5f803e3d5ffd5b50506040805160a08101825260295473ffffffffffffffffffffffffffffffffffffffff9081168252602a5481166020830152610bb882840152603c6060830152605b5481166080830152602b5492517f6276cbbe000000000000000000000000000000000000000000000000000000008152919450919091169150636276cbbe90620023879084906c01000000000000000000000000906004016200dc69565b6020604051808303815f875af1158015620023a4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620023ca91906200dd10565b5060408051606080820183528382527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc4602080840191909152603c928401929092528351605e80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161790915592850151605f805495870151878501519284167fffffffffffffffffff0000000000000000000000000000000000000000000000909716969096177401000000000000000000000000000000000000000062ffffff97881602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000969092169590950217909355608090930151835490911691161790555050606180547fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000016633cffffc4179055565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa158015620025a3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620025c991906200dafd565b604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605854831660e085015290835260595480820b602085015263010000009004900b92820192909252605c549293506200269092909168056bc75e2d6310000091165f62000d6f565b605c546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156200270d575f80fd5b505af115801562002720573d5f803e3d5ffd5b5050604480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116935063095ea7b39250015f604051808303815f87803b15801562002793575f80fd5b505af1158015620027a6573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002812575f80fd5b505af115801562002825573d5f803e3d5ffd5b5050604454605454604080515f815260208101918290527f2b9261de0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9283169450632b9261de9350620028949286921690602481016200db42565b5f604051808303815f87803b158015620028ac575f80fd5b505af1158015620028bf573d5f803e3d5ffd5b50506044546040517f89097a6a00000000000000000000000000000000000000000000000000000000815260048101859052620029259350620019e0925073ffffffffffffffffffffffffffffffffffffffff909116906389097a6a9060240162001998565b6044546040517f16a2413100000000000000000000000000000000000000000000000000000000815260048101839052620029809173ffffffffffffffffffffffffffffffffffffffff16906316a241319060240162001a3e565b60448054605c54605d546040517fb88d4fde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152928301849052608060648401525f6084840152169063b88d4fde9060a4015b5f604051808303815f87803b15801562002a0c575f80fd5b505af115801562002a1f573d5f803e3d5ffd5b5050505062002ac060545f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663848a79cf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002a92573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002ab891906200dafd565b60016200be3c565b6044546040517f89097a6a0000000000000000000000000000000000000000000000000000000081526004810183905262002b299162002b229173ffffffffffffffffffffffffffffffffffffffff909116906389097a6a9060240162001998565b5f6200b54c565b6044546040517f16a241310000000000000000000000000000000000000000000000000000000081526004810183905262000a359173ffffffffffffffffffffffffffffffffffffffff16906316a2413190602401602060405180830381865afa15801562002b9a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002bc091906200dc1b565b5f6200b5cc565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa15801562002c35573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002c5b91906200dafd565b604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605854831660e085015290835260595480820b602085015263010000009004900b92820192909252605c5492935062002d2292909168056bc75e2d6310000091165f62000d6f565b605c546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562002d9f575f80fd5b505af115801562002db2573d5f803e3d5ffd5b5050604480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116935063095ea7b39250015f604051808303815f87803b15801562002e25575f80fd5b505af115801562002e38573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002ea4575f80fd5b505af115801562002eb7573d5f803e3d5ffd5b5050605a546040517f8fb5f1710000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fb5f17191506024015f604051808303815f87803b15801562002f25575f80fd5b505af115801562002f38573d5f803e3d5ffd5b5050605a5460405160206024820152600f60448201527f6e6f7469667953756273637269626500000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507f90bfb865000000000000000000000000000000000000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff16907f8d57f6b200000000000000000000000000000000000000000000000000000000907f421e7f540000000000000000000000000000000000000000000000000000000090608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167fffffffff000000000000000000000000000000000000000000000000000000009096169590951790528151600481526024808201845291810180519095167f81ea5e9e00000000000000000000000000000000000000000000000000000000179094529051620030dc95949391016200db78565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200316e916004016200dbe4565b5f604051808303815f87803b15801562003186575f80fd5b505af115801562003199573d5f803e3d5ffd5b5050604454605a5473ffffffffffffffffffffffffffffffffffffffff9182169350632b9261de92508491165f62000ba2565b606060168054806020026020016040519081016040528092919081815260200182805480156200323157602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162003205575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562003387575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200336f578382905f5260205f20018054620032dd906200dd32565b80601f01602080910402602001604051908101604052809291908181526020018280546200330b906200dd32565b80156200335a5780601f1062003330576101008083540402835291602001916200335a565b820191905f5260205f20905b8154815290600101906020018083116200333c57829003601f168201915b505050505081526020019060010190620032bd565b5050505081525050815260200190600101906200325e565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156200323157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162003205575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200323157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162003205575050505050905090565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa158015620034d8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620034fe91906200dafd565b604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605854831660e085015290835260595480820b602085015263010000009004900b92820192909252605c54929350620035c592909168056bc75e2d6310000091165f62000d6f565b605c546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562003642575f80fd5b505af115801562003655573d5f803e3d5ffd5b5050604480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116935063095ea7b39250015f604051808303815f87803b158015620036c8575f80fd5b505af1158015620036db573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003747575f80fd5b505af11580156200375a573d5f803e3d5ffd5b5050604454605554604080515f815260208101918290527f2b9261de0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9283169450632b9261de9350620037c99286921690602481016200db42565b5f604051808303815f87803b158015620037e1575f80fd5b505af1158015620037f4573d5f803e3d5ffd5b50506055546040517f70420af500000000000000000000000000000000000000000000000000000000815262600000600482015273ffffffffffffffffffffffffffffffffffffffff90911692506370420af591506024015f604051808303815f87803b15801562003864575f80fd5b505af115801562003877573d5f803e3d5ffd5b50506044546040517fad0b27fb0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116925063ad0b27fb91506024015f604051808303815f87803b158015620038e5575f80fd5b505af1158015620038f8573d5f803e3d5ffd5b5050505062002ac060555f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663848a79cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200396b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200399191906200dafd565b5f6200be3c565b620039b28167ffffffffffffffff166201e848456200be95565b90505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003a20573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003a4691906200dafd565b604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605854831660e085015290835260595480820b602085015263010000009004900b92820192909252605c5492935062003b0d92909168056bc75e2d6310000091165f62000d6f565b605c546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562003b8a575f80fd5b505af115801562003b9d573d5f803e3d5ffd5b5050604480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116935063095ea7b39250015f604051808303815f87803b15801562003c10575f80fd5b505af115801562003c23573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003c8f575f80fd5b505af115801562003ca2573d5f803e3d5ffd5b5050604454605454604080515f815260208101918290527f2b9261de0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9283169450632b9261de935062003d119286921690602481016200db42565b5f604051808303815f87803b15801562003d29575f80fd5b505af115801562003d3c573d5f803e3d5ffd5b505050505f60545f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663848a79cf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003dac573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003dd291906200dafd565b905060445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634767565f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003e3f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003e6591906200dafd565b8367ffffffffffffffff16101562003fa4576040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fed43c3a6000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b15801562003efa575f80fd5b505af115801562003f0d573d5f803e3d5ffd5b50506044546040517fad0b27fb0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff909116925063ad0b27fb915067ffffffffffffffff8616906024015f604051808303815f88803b15801562003f87575f80fd5b5087f115801562003f9a573d5f803e3d5ffd5b5050505050505050565b6044546040517fad0b27fb0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063ad0b27fb9067ffffffffffffffff8616906024015f604051808303815f88803b1580156200401a575f80fd5b5087f11580156200402d573d5f803e3d5ffd5b5050505050620040da60545f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663848a79cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620040a1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620040c791906200dafd565b620040d48360016200ddb2565b6200be3c565b505050565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa1580156200414d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200417391906200dafd565b604080516101008101825260565473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605854831660e085015290835260595480820b602085015263010000009004900b92820192909252605c549293506200423a92909168056bc75e2d6310000091165f62000d6f565b605c546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015620042b7575f80fd5b505af1158015620042ca573d5f803e3d5ffd5b5050604480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116935063095ea7b39250015f604051808303815f87803b1580156200433d575f80fd5b505af115801562004350573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620043bc575f80fd5b505af1158015620043cf573d5f803e3d5ffd5b5050604454605454604080515f815260208101918290527f2b9261de0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9283169450632b9261de93506200443e9286921690602481016200db42565b5f604051808303815f87803b15801562004456575f80fd5b505af115801562004469573d5f803e3d5ffd5b50506044546040517f89097a6a00000000000000000000000000000000000000000000000000000000815260048101859052620