@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 1.01 MB
JSON
{"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_burn_slippage_exactDoesNotRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_burn_slippage_revertAmount0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_burn_slippage_revertAmount1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_burn_slippage_revert_swap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decreaseLiquidity_collectFees","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"decreaseLiquidityDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decreaseLiquidity_slippage_exactDoesNotRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decreaseLiquidity_slippage_revertAmount0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decreaseLiquidity_slippage_revertAmount1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decreaseLiquidity_slippage_revert_swap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decrease_increaseCurrency1_take_settle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decrease_take","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_burn_emptyPosition","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_burn_nonEmptyPosition","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_decreaseLiquidity","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"decreaseLiquidityDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_decreaseLiquidity_assertCollectedBalance","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"decreaseLiquidityDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_decreaseLiquidity_clear","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"decreaseLiquidityDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_decreaseLiquidity_clearExceedsThenTake","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_initialize","inputs":[{"name":"sqrtPrice","type":"uint160","internalType":"uint160"},{"name":"fee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_mint_clear_revert","inputs":[{"name":"seedParams","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_mint_recipient","inputs":[{"name":"seedParams","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_mint_withLiquidityDelta","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mintTransferBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mintTransferCollect","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mintTransferDecrease","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mintTransferIncrease","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_exactTokenRatios","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_slippageRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_slippage_exactDoesNotRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_slippage_revertAmount0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_slippage_revertAmount1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_slippage_revert_swap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint_toRecipient","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_modifyLiquidities_reverts_deadlinePassed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_modifyLiquidities_reverts_mismatchedLengths","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_modifyLiquidities_reverts_reentrancy","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":"0x600c805460ff199081166001908117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e0819052602080546378ffff8865ffffffffffff19918216811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c0819052602680549093168417909255602755602880546001600160a01b0319908116909217905560428054909116600e17905560438054614000600160a11b036001600160a81b031990911617905561011a904290610312565b604555604b80546001600160a01b03191661050017905560405161013d90610304565b604051809103905ff080158015610156573d5f803e3d5ffd5b50604c80546001600160a01b03929092166001600160a01b0319928316179055604e8054821661abcd17905560508054909116610f80179055604080518082019091526005815264414c49434560d81b60208201526101b4906101e5565b605580546001600160a01b0319166001600160a01b03929092169190911790553480156101df575f80fd5b506103be565b5f6101ef826101f6565b5092915050565b5f80826040516020016102099190610337565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610272573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610296919061034d565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906102d2908590879060040161037a565b5f604051808303815f87803b1580156102e9575f80fd5b505af11580156102fb573d5f803e3d5ffd5b50505050915091565b61121e806202dbb683390190565b8082018082111561033157634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82518060208501845e5f920191825250919050565b5f6020828403121561035d575f80fd5b81516001600160a01b0381168114610373575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6202d7e980620003cd5f395ff3fe608060405260043610620003ee575f3560e01c80638d6937f11162000206578063c5a394df116200011e578063d3d802fe11620000aa578063ebdc8eb21162000076578063ebdc8eb21462000b0c578063ef59777e1462000b30578063f8ccbf471462000b54578063fa7626d41462000b87575f80fd5b8063d3d802fe1462000ab0578063e0e8728d1462000ac7578063e20c9f711462000ade578063e5cdd90a1462000af5575f80fd5b8063cb69539011620000ea578063cb6953901462000a47578063cc33011f1462000a5e578063d009dad91462000a82578063d1ccb9891462000a99575f80fd5b8063c5a394df14620009de578063c5e683e114620009f5578063c7b8e15d1462000a19578063c9ec18721462000a30575f80fd5b8063ac476865116200019e578063b5508aa9116200016a578063b5508aa91462000971578063ba414fa61462000988578063c040622614620009b0578063c4238da114620009c7575f80fd5b8063ac47686514620008ca578063b0464fdc14620008e1578063b16f6c3214620008f8578063b1a73b8a1462000904575f80fd5b80639551343811620001de5780639551343814620008545780639f4fe53a146200086b578063a02cb1f2146200088f578063a4dc1f8d14620008a6575f80fd5b80638d6937f114620007db578063916a17c614620007ff57806393ad73ed1462000825575f80fd5b80633be5359c116200030657806363e8f72811620002925780637b282a20116200025e5780637b282a2014620007705780638327a313146200078757806385226c81146200079e578063858bcb3314620007c4575f80fd5b806363e8f72814620006ee57806366d9a9a0146200071c57806367382c0514620007425780637081168c1462000759575f80fd5b806343f7d98611620002d257806343f7d986146200067857806345fda2d2146200068f578063542524dd14620006b35780635ea502c914620006ca575f80fd5b80633be5359c146200061c5780633e5e3c2314620006335780633f7286f4146200064a578063434603d91462000661575f80fd5b80631c5e46e7116200038657806327fe8227116200035257806327fe822714620005635780632ade388014620005875780633403d4ae14620005ad57806339cd201314620005c4575f80fd5b80631c5e46e714620004f85780631ed7831c146200050f57806320687ec914620005355780632537a834146200054c575f80fd5b8063106d023111620003c6578063106d0231146200044e57806315590c8014620004a657806316179cb514620004ca57806317f4346d14620004e1575f80fd5b806303ef31f614620003fa5780630429a1e814620004205780630a9254e41462000437575f80fd5b36620003f657005b5f80fd5b34801562000406575f80fd5b506200041e620004183660046200e75e565b62000ba2565b005b3480156200042c575f80fd5b506200041e62000bba565b34801562000443575f80fd5b506200041e62000e1d565b3480156200045a575f80fd5b506047546200047c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015620004b2575f80fd5b506200041e620004c43660046200e836565b62000fd8565b348015620004d6575f80fd5b506200041e6200136a565b348015620004ed575f80fd5b506200041e62001759565b34801562000504575f80fd5b506200041e62001aea565b3480156200051b575f80fd5b5062000526620022f3565b6040516200049d91906200e862565b34801562000541575f80fd5b506200041e62002362565b34801562000558575f80fd5b506200041e62002659565b3480156200056f575f80fd5b506200041e620005813660046200e8bc565b62002a96565b34801562000593575f80fd5b506200059e62002efc565b6040516200049d91906200e9a1565b348015620005b9575f80fd5b506200041e62003051565b348015620005d0575f80fd5b50602354602454602554620005f392600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016200049d565b34801562000628575f80fd5b506200041e62003395565b3480156200063f575f80fd5b50620005266200370c565b34801562000656575f80fd5b506200052662003779565b3480156200066d575f80fd5b506200041e620037e6565b34801562000684575f80fd5b506200041e62003e1c565b3480156200069b575f80fd5b506200041e620006ad3660046200e8bc565b62003fb8565b348015620006bf575f80fd5b506200047c62004702565b348015620006d6575f80fd5b506200041e620006e83660046200e836565b62004726565b348015620006fa575f80fd5b50604d546200047c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801562000728575f80fd5b506200073362004ba2565b6040516200049d91906200eab1565b3480156200074e575f80fd5b506200041e62004d27565b34801562000765575f80fd5b506200041e62004e42565b3480156200077c575f80fd5b506200041e62004fd7565b34801562000793575f80fd5b506200041e62005551565b348015620007aa575f80fd5b50620007b5620057e6565b6040516200049d91906200eb53565b348015620007d0575f80fd5b506200041e620058bb565b348015620007e7575f80fd5b506200041e620007f93660046200eb67565b62005b6e565b3480156200080b575f80fd5b506200081662005e73565b6040516200049d91906200eba9565b34801562000831575f80fd5b50602054602154602254620005f392600281810b936301000000909204900b9184565b34801562000860575f80fd5b506200041e62005f7a565b34801562000877575f80fd5b506200041e620008893660046200e836565b62006130565b3480156200089b575f80fd5b506200041e620068a7565b348015620008b2575f80fd5b506200041e620008c43660046200e8bc565b62006e08565b348015620008d6575f80fd5b506200041e620074fd565b348015620008ed575f80fd5b5062000816620077a0565b3480156200041e575f80fd5b34801562000910575f80fd5b506026546027546028546200093d9260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016200049d565b3480156200097d575f80fd5b50620007b5620078a7565b34801562000994575f80fd5b506200099f6200797c565b60405190151581526020016200049d565b348015620009bc575f80fd5b506200047c62007a50565b348015620009d3575f80fd5b506200041e62007b1a565b348015620009ea575f80fd5b506200041e62007ca6565b34801562000a01575f80fd5b506200041e62000a133660046200ec4f565b620081d0565b34801562000a25575f80fd5b506200047c62008775565b34801562000a3c575f80fd5b506200047c62008787565b34801562000a53575f80fd5b506200041e62008797565b34801562000a6a575f80fd5b506200041e62000a7c3660046200e8bc565b62008921565b34801562000a8e575f80fd5b506200041e62008db9565b34801562000aa5575f80fd5b506200041e62008fb4565b34801562000abc575f80fd5b506200041e62009161565b34801562000ad3575f80fd5b506200041e620094e4565b34801562000aea575f80fd5b5062000526620095f1565b34801562000b01575f80fd5b506200041e6200965e565b34801562000b18575f80fd5b506200041e62000b2a3660046200e8bc565b62009935565b34801562000b3c575f80fd5b506200041e62000b4e3660046200e836565b62009ec6565b34801562000b60575f80fd5b506043546200099f9074010000000000000000000000000000000000000000900460ff1681565b34801562000b93575f80fd5b50601f546200099f9060ff1681565b62000bad816200a26b565b62000bb76200a416565b50565b5f62000bc56200a45e565b905062000c46600260405160200162000c0f9060208082526004908201527f7465737400000000000000000000000000000000000000000000000000000000604082015260600190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528391906200a4bc565b5062000c8f600360405160200162000c0f9060208082526004908201527f7465737400000000000000000000000000000000000000000000000000000000604082015260600190565b506040805160018082528183019092525f91816020015b606081526020019060019003908162000ca6579050506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527faaad13f7000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b15801562000d42575f80fd5b505af115801562000d55573d5f803e3d5ffd5b5050604454845160405173ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f925062000d909185906020016200ec7f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905262000dcb4260016200ed45565b6040518363ffffffff1660e01b815260040162000dea9291906200ed5b565b5f604051808303815f87803b15801562000e02575f80fd5b505af115801562000e15573d5f803e3d5ffd5b505050505050565b62000e276200a6f9565b62000e316200acfd565b505062000e3d62004d27565b602954602a54604a5462000e7f9273ffffffffffffffffffffffffffffffffffffffff9081169281169116610bb86c010000000000000000000000006200ad84565b6054558051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000091909316029190911790556080909201516038805490931690821617909155602b5462000f8e911662000ba2565b60555462000fb29073ffffffffffffffffffffffffffffffffffffffff166200aeeb565b60555462000fd69073ffffffffffffffffffffffffffffffffffffffff166200b03e565b565b6044546040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854821660808201525f92620010ae921690600190866c01000000000000000000000000865b6040519080825280601f01601f191660200182016040528015620010a7576020820181803683370190505b506200b140565b8094508192505050620010c7825f85604001516200b2e2565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152603854831660e08501529083528751810b602080850191909152880151900b92820192909252602954929450915f916200118191166200b3de565b602a549091505f90620011aa9073ffffffffffffffffffffffffffffffffffffffff166200b3de565b9050620011e78484875f5b6040519080825280601f01601f191660200182016040528015620011e0576020820181803683370190505b506200b49c565b5f620011f26200b50a565b6044546040517f1efeed33000000000000000000000000000000000000000000000000000000008152600481018890529192505f9173ffffffffffffffffffffffffffffffffffffffff90911690631efeed3390602401602060405180830381865afa15801562001265573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200128b91906200ed7e565b6fffffffffffffffffffffffffffffffff169050620012bc81888a60400151620012b691906200edaf565b6200b617565b6029546200130e90620012e59073ffffffffffffffffffffffffffffffffffffffff166200b3de565b620012f08460801d90565b620012b6906fffffffffffffffffffffffffffffffff16876200ed45565b602a546200136090620013379073ffffffffffffffffffffffffffffffffffffffff166200b3de565b6200134284600f0b90565b620012b6906fffffffffffffffffffffffffffffffff16866200ed45565b5050505050505050565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840152603854821660e084015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8860208084019190915260788385015260445484517f75794a3c000000000000000000000000000000000000000000000000000000008152945193945f9491909316926375794a3c9260048083019391928290030181865afa1580156200147c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620014a291906200edc5565b9050620014e882670de0b6b3a764000060015f5b6040519080825280601f01601f191660200182016040528015620014e1576020820181803683370190505b506200b695565b604a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663623ea21a6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200154f575f80fd5b505af115801562001562573d5f803e3d5ffd5b50506029545f92506200158c915073ffffffffffffffffffffffffffffffffffffffff166200b3de565b602a549091505f90620015b59073ffffffffffffffffffffffffffffffffffffffff166200b3de565b90505f620015c26200a45e565b90506200161a600185670de0b6b3a76400005f80805b6040519080825280601f01601f19166020018201604052801562001603576020820181803683370190505b5060405160200162000c0f9594939291906200eddd565b5084515f906200162e90839060016200b6a4565b6044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff9091169163dd46508f916200168d918591906004016200ed5b565b5f604051808303815f87803b158015620016a5575f80fd5b505af1158015620016b8573d5f803e3d5ffd5b505050505f620016c76200b50a565b6029549091506200170d90620016f39073ffffffffffffffffffffffffffffffffffffffff166200b3de565b620016fe8360801d90565b620012b690600f0b886200ed45565b602a546200175090620017369073ffffffffffffffffffffffffffffffffffffffff166200b3de565b6200174183600f0b90565b620012b690600f0b876200ed45565b50505050505050565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840152603854821660e084015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8860208084019190915260788385015260445484517f75794a3c000000000000000000000000000000000000000000000000000000008152945193945f9491909316926375794a3c9260048083019391928290030181865afa1580156200186b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200189191906200edc5565b9050620018aa82670de0b6b3a764000060015f620014b6565b5f620018b56200b50a565b90505f620018c38260801d90565b620018ce906200ee37565b90505f620019198486620018e48560016200ee76565b5f805b6040519080825280601f01601f19166020018201604052801562001912576020820181803683370190505b506200b778565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37f12816f2200000000000000000000000000000000000000000000000000000000620019638560016200ee76565b620019706001876200eea1565b6040516fffffffffffffffffffffffffffffffff9283166024820152911660448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001a29916004016200eecc565b5f604051808303815f87803b15801562001a41575f80fd5b505af115801562001a54573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f925062001ab4918591906004016200ed5b565b5f604051808303815f87803b15801562001acc575f80fd5b505af115801562001adf573d5f803e3d5ffd5b505050505050505050565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840152603854821660e084015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8860208084019190915260788385015260445484517f75794a3c000000000000000000000000000000000000000000000000000000008152945193945f9491909316926375794a3c9260048083019391928290030181865afa15801562001bfc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001c2291906200edc5565b905062001c3b82670de0b6b3a764000060015f620014b6565b604a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663623ea21a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001ca2575f80fd5b505af115801562001cb5573d5f803e3d5ffd5b50506029545f925062001cdf915073ffffffffffffffffffffffffffffffffffffffff166200b3de565b602a549091505f9062001d089073ffffffffffffffffffffffffffffffffffffffff166200b3de565b90505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d76573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001d9c91906200edc5565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c084015260385490911660e083015281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8860208201525f91810182905291925062001e606200a45e565b905062001e7b600187670de0b6b3a76400005f8080620015d8565b50815160208084015160408086015181515f8152938401825262001ecf9460029462000c0f949193919291670de0b6b3a7640000916fffffffffffffffffffffffffffffffff91829160019181016200eee0565b506036546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526001908201525f606082015262001f1190600e9060800162000c0f565b506037546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301525f908201526001606082015262001f5390600b9060800162000c0f565b5086515f9062001f6790839060016200b6a4565b6044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff9091169163dd46508f9162001fc6918591906004016200ed5b565b5f604051808303815f87803b15801562001fde575f80fd5b505af115801562001ff1573d5f803e3d5ffd5b5050604a546040517fd934d2f70000000000000000000000000000000000000000000000000000000081525f60048201819052935073ffffffffffffffffffffffffffffffffffffffff909116915063d934d2f790602401602060405180830381865afa15801562002065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200208b91906200edc5565b604a546040517fd934d2f7000000000000000000000000000000000000000000000000000000008152600160048201529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169063d934d2f790602401602060405180830381865afa158015620020fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200212491906200edc5565b90506200213f620021358260801d90565b600f0b5f6200b7c3565b6029546200218290620021689073ffffffffffffffffffffffffffffffffffffffff166200b3de565b620021738460801d90565b620012b690600f0b8b6200ed45565b602a54620021e790620021ab9073ffffffffffffffffffffffffffffffffffffffff166200b3de565b620021b683600f0b90565b620021c185600f0b90565b620021cd91906200eff9565b600f0b620021db906200f04a565b620012b6908a6200edaf565b6044546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101889052620022869173ffffffffffffffffffffffffffffffffffffffff1690636352211e906024015b602060405180830381865afa15801562002259573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200227f91906200f083565b306200b81c565b602a54620022b690620022af9073ffffffffffffffffffffffffffffffffffffffff166200b3de565b886200b88b565b620022e7620022c583600f0b90565b600f0b620022d383600f0b90565b620022de906200ee37565b600f0b6200b88b565b50505050505050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156200235857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200232c575b5050505050905090565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c084015260385490911660e083015281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff886020820181905260789282019290925290670de0b6b3a7640000905f906200245f906c010000000000000000000000009062002449906200b8e4565b6200245886604001516200b8e4565b856200bbf8565b5090505f620024b1848460016fffffffffffffffffffffffffffffffff81865b6040519080825280601f01601f191660200182016040528015620024aa576020820181803683370190505b506200bcee565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37f31e30ad0000000000000000000000000000000000000000000000000000000006001620024fc86826200ed45565b60405160ff90921660248301526044820152606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620025a3916004016200eecc565b5f604051808303815f87803b158015620025bb575f80fd5b505af1158015620025ce573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f92506200262e918591906004016200ed5b565b5f604051808303815f87803b15801562002646575f80fd5b505af115801562001360573d5f803e3d5ffd5b6044546040515f9173ffffffffffffffffffffffffffffffffffffffff169062002683906200e678565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015620026ba573d5f803e3d5ffd5b50602a5490915073ffffffffffffffffffffffffffffffffffffffff908116908216106200270257602a5473ffffffffffffffffffffffffffffffffffffffff16816200271e565b602a54819073ffffffffffffffffffffffffffffffffffffffff165b602a805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602980549390921692169190911790556200277d816200bd4b565b602954602a54620027ba9173ffffffffffffffffffffffffffffffffffffffff90811691165f610bb86c010000000000000000000000006200ad84565b60545580516036805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255602080850151603780546040808901516060808b015162ffffff908116770100000000000000000000000000000000000000000000009081027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff948316740100000000000000000000000000000000000000009081027fffffffffffffffffff0000000000000000000000000000000000000000000000909816998e16999099179690961793841686179687905560809c8d015160388054918e1691909b168117909a5584516101008101909552918401998a52938a1691909916179881019890985291810490911660a08701529390930460020b60c0850181905260e08501919091529083525f92918201906200291c906200f0a1565b600290810b8252603754770100000000000000000000000000000000000000000000009004900b6020918201526040805191820190525f80825291925062002973908390670de0b6b3a7640000906001906200be7f565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906064015f604051808303815f87803b15801562002a07575f80fd5b505af115801562002a1a573d5f803e3d5ffd5b505060445473ffffffffffffffffffffffffffffffffffffffff16915063dd46508f90508262002a4c4260016200ed45565b6040518363ffffffff1660e01b815260040162002a6b9291906200ed5b565b5f604051808303815f87803b15801562002a83575f80fd5b505af115801562001750573d5f803e3d5ffd5b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b606082015260385490911660808201525f9062002b3790836c010000000000000000000000006200bea1565b90505f8082604001511262002b5157816040015162002b61565b816040015162002b61906200f04a565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c085015260385490921660e084015282528551810b602080840191909152860151900b918101919091529091505f62002c146200a45e565b825160208085015160408087015181515f8152938401825294955062002c5f9460029462000c0f949093928a916fffffffffffffffffffffffffffffffff918291309181016200f0d8565b506036546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9082015262002cba9060139060600162000c0f565b506037546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9082015262002d159060139060600162000c0f565b505f62002d22826200bf19565b602954604085015191925073ffffffffffffffffffffffffffffffffffffffff16905f60029190910b1362002d6c5750602a5473ffffffffffffffffffffffffffffffffffffffff165b6040805173ffffffffffffffffffffffffffffffffffffffff831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4c085bf10000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb39162002e3991906004016200eecc565b5f604051808303815f87803b15801562002e51575f80fd5b505af115801562002e64573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f925062002ec4918691906004016200ed5b565b5f604051808303815f87803b15801562002edc575f80fd5b505af115801562002eef573d5f803e3d5ffd5b5050505050505050505050565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562003048575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562003030578382905f5260205f2001805462002f9e906200f1d9565b80601f016020809104026020016040519081016040528092919081815260200182805462002fcc906200f1d9565b80156200301b5780601f1062002ff1576101008083540402835291602001916200301b565b820191905f5260205f20905b81548152906001019060200180831162002ffd57829003601f168201915b50505050508152602001906001019062002f7e565b50505050815250508152602001906001019062002f1f565b50505050905090565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840152603854821660e084015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8860208084019190915260788385015260445484517f75794a3c000000000000000000000000000000000000000000000000000000008152945193945f9491909316926375794a3c9260048083019391928290030181865afa15801562003163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200318991906200edc5565b9050620031a282670de0b6b3a764000060015f620014b6565b5f620031ad6200b50a565b90505f620031bb82600f0b90565b620031c6906200ee37565b90505f6200323d8486670de0b6b3a76400006001620031e58860801d90565b620031f0906200ee37565b620031fc91906200eea1565b620032096001886200eea1565b5f5b6040519080825280601f01601f19166020018201604052801562003236576020820181803683370190505b506200bf4d565b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b60608201526038549091166080820152909150620033219060017ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00005f5b6040519080825280601f01601f1916602001820160405280156200331a576020820181803683370190505b506200bf8d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37f12816f22000000000000000000000000000000000000000000000000000000006200336a6001866200eea1565b6040516fffffffffffffffffffffffffffffffff90911660248201525f604482015260640162001997565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c084015260385490911660e083015281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88602082018190526078928201929092529068056bc75e2d63100000905f90819062003495906c01000000000000000000000000906200347f906200b8e4565b6200348e87604001516200b8e4565b866200bbf8565b91509150620034a582826200b617565b5f620034b38360016200ee76565b90505f620034c7868684806001866200247f565b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b606082015260385490911660808201529091506200357e9060017ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00005f620032ef565b50604080516fffffffffffffffffffffffffffffffff841660248201526710a7119f9c0836bf60448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f31e30ad00000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3916200365691906004016200eecc565b5f604051808303815f87803b1580156200366e575f80fd5b505af115801562003681573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f9250620036e1918591906004016200ed5b565b5f604051808303815f87803b158015620036f9575f80fd5b505af1158015620022e7573d5f803e3d5ffd5b606060188054806020026020016040519081016040528092919081815260200182805480156200235857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200232c575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200235857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200232c575050505050905090565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840152603854821660e084015282527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffda86020808401919091526102588385015260445484517f75794a3c0000000000000000000000000000000000000000000000000000000081529451939468056bc75e2d63100000945f9492909216926375794a3c926004808401938290030181865afa15801562003902573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200392891906200edc5565b905062003939838360015f620014b6565b603054670de0b6b3a76400009067016345785d8a00009073ffffffffffffffffffffffffffffffffffffffff1663234266d7603684845f6040519080825280601f01601f1916602001820160405280156200399b576020820181803683370190505b506040518563ffffffff1660e01b8152600401620039bd94939291906200f22c565b6020604051808303815f875af1158015620039da573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003a0091906200edc5565b50604480546055546040517f23b872dd00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff918216602482015292830186905216906323b872dd906064015f604051808303815f87803b15801562003a7a575f80fd5b505af115801562003a8d573d5f803e3d5ffd5b50506055546029545f935062003abe925073ffffffffffffffffffffffffffffffffffffffff90811691166200c1a0565b605554602a549192505f9162003aee9173ffffffffffffffffffffffffffffffffffffffff91821691166200c1a0565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562003b6e575f80fd5b505af115801562003b81573d5f803e3d5ffd5b50678ac7230489e80000925062003b9f915087905089835f620011b5565b5f62003baa6200b50a565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffff