@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 246 kB
JSON
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"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_decodeActionsRouterParams_emptyParams","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_decodeActionsRouterParams_sliceOutOfBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeCurrencyAddressAndUint256_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeCurrencyAndAddress_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeCurrencyAndUint256_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeCurrencyPairAndAddress_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeCurrencyPair_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeCurrencyUint256AndBool_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeCurrency_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_decodeUint256_outOutBounds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_decodeActionsRouterParams","inputs":[{"name":"_actions","type":"bytes","internalType":"bytes"},{"name":"_actionParams","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeBurnParams","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount0Min","type":"uint128","internalType":"uint128"},{"name":"_amount1Min","type":"uint128","internalType":"uint128"},{"name":"_hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeCurrency","inputs":[{"name":"_currency","type":"address","internalType":"Currency"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeCurrencyAddressAndUint256","inputs":[{"name":"_currency","type":"address","internalType":"Currency"},{"name":"_addr","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeCurrencyAndAddress","inputs":[{"name":"_currency","type":"address","internalType":"Currency"},{"name":"__address","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeCurrencyAndUint256","inputs":[{"name":"_currency","type":"address","internalType":"Currency"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeCurrencyPair","inputs":[{"name":"_currency0","type":"address","internalType":"Currency"},{"name":"_currency1","type":"address","internalType":"Currency"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeCurrencyPairAndAddress","inputs":[{"name":"_currency0","type":"address","internalType":"Currency"},{"name":"_currency1","type":"address","internalType":"Currency"},{"name":"__address","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeCurrencyUint256AndBool","inputs":[{"name":"_currency","type":"address","internalType":"Currency"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_boolean","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeIncreaseLiquidityFromAmountsParams","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount0Max","type":"uint128","internalType":"uint128"},{"name":"_amount1Max","type":"uint128","internalType":"uint128"},{"name":"_hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeMintFromDeltasParams","inputs":[{"name":"_config","type":"tuple","internalType":"struct PositionConfig","components":[{"name":"poolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}]},{"name":"_amount0Max","type":"uint128","internalType":"uint128"},{"name":"_amount1Max","type":"uint128","internalType":"uint128"},{"name":"_owner","type":"address","internalType":"address"},{"name":"_hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeMintParams","inputs":[{"name":"_config","type":"tuple","internalType":"struct PositionConfig","components":[{"name":"poolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}]},{"name":"_liquidity","type":"uint256","internalType":"uint256"},{"name":"_amount0Max","type":"uint128","internalType":"uint128"},{"name":"_amount1Max","type":"uint128","internalType":"uint128"},{"name":"_owner","type":"address","internalType":"address"},{"name":"_hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeModifyLiquidityParams","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_liquidity","type":"uint256","internalType":"uint256"},{"name":"_amount0","type":"uint128","internalType":"uint128"},{"name":"_amount1","type":"uint128","internalType":"uint128"},{"name":"_hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeSwapExactInParams","inputs":[{"name":"_swapParams","type":"tuple","internalType":"struct IV4Router.ExactInputParams","components":[{"name":"currencyIn","type":"address","internalType":"Currency"},{"name":"path","type":"tuple[]","internalType":"struct PathKey[]","components":[{"name":"intermediateCurrency","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"},{"name":"hookData","type":"bytes","internalType":"bytes"}]},{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"amountOutMinimum","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeSwapExactInSingleParams","inputs":[{"name":"_swapParams","type":"tuple","internalType":"struct IV4Router.ExactInputSingleParams","components":[{"name":"poolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"amountOutMinimum","type":"uint128","internalType":"uint128"},{"name":"hookData","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeSwapExactOutParams","inputs":[{"name":"_swapParams","type":"tuple","internalType":"struct IV4Router.ExactOutputParams","components":[{"name":"currencyOut","type":"address","internalType":"Currency"},{"name":"path","type":"tuple[]","internalType":"struct PathKey[]","components":[{"name":"intermediateCurrency","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"},{"name":"hookData","type":"bytes","internalType":"bytes"}]},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"amountInMaximum","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeSwapExactOutSingleParams","inputs":[{"name":"_swapParams","type":"tuple","internalType":"struct IV4Router.ExactOutputSingleParams","components":[{"name":"poolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"amountInMaximum","type":"uint128","internalType":"uint128"},{"name":"hookData","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_decodeUint256","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"view"},{"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":"0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602b575f80fd5b50616aa2806100395f395ff3fe608060405234801561000f575f80fd5b50600436106102c1575f3560e01c80638a9c8f631161017c578063ba414fa6116100dd578063ea92fb6111610093578063f22b167d1161006e578063f22b167d1461050c578063f765931614610514578063fa7626d414610527575f80fd5b8063ea92fb61146104de578063edb797f3146104f1578063edf0d41214610504575f80fd5b8063cb798874116100c3578063cb798874146104c6578063d508a3b2146104ce578063e20c9f71146104d6575f80fd5b8063ba414fa61461049b578063bdb18bfc146104b3575f80fd5b8063a3a9819411610132578063b0464fdc11610118578063b0464fdc14610483578063b5508aa91461048b578063b6fa8e6414610493575f80fd5b8063a3a9819414610468578063aefcde1a1461047b575f80fd5b8063916a17c611610162578063916a17c61461042d5780639a2e7061146104425780639d5a2cdc14610455575f80fd5b80638a9c8f63146104125780638fe73a8c1461041a575f80fd5b80633e0695ae116102265780635a8d87cd116101dc578063801c9f10116101c2578063801c9f10146103d757806385226c81146103ea578063875d532d146103ff575f80fd5b80635a8d87cd146103ba57806366d9a9a0146103c2575f80fd5b80633f7286f41161020c5780633f7286f41461038c57806349154a631461039457806353b0c8bd146103a7575f80fd5b80633e0695ae146103715780633e5e3c2314610384575f80fd5b8063112d05c91161027b57806323700bf51161026157806323700bf5146103415780632ade38801461035457806334527ef014610369575f80fd5b8063112d05c9146103105780631ed7831c14610323575f80fd5b80630742f58a116102ab5780630742f58a146102ed5780630a9254e4146103005780630d4a9f7c14610308575f80fd5b80626443eb146102c5578063029ddc40146102da575b5f80fd5b6102d86102d3366004613ad1565b610534565b005b6102d86102e8366004613b26565b61062f565b6102d86102fb366004613b5a565b610720565b6102d8610834565b6102d861089c565b6102d861031e366004613c06565b610a36565b61032b610c70565b6040516103389190613c92565b60405180910390f35b6102d861034f366004613cea565b610cdd565b61035c610dcc565b6040516103389190613dc5565b6102d8610f15565b6102d861037f366004613e83565b6110a0565b61032b61124c565b61032b6112b7565b6102d86103a2366004613ebd565b611322565b6102d86103b5366004613ef4565b6113fb565b6102d86115be565b6103ca611734565b6040516103389190613fbe565b6102d86103e5366004613ebd565b6118ad565b6103f2611930565b604051610338919061405a565b6102d861040d366004614073565b6119fb565b6102d8611ae9565b6102d8610428366004613ef4565b611c6e565b610435611e24565b60405161033891906140b1565b6102d8610450366004614153565b611f27565b6102d861046336600461416e565b612020565b6102d86104763660046143cd565b612267565b6102d86123c3565b610435612553565b6103f2612656565b6102d8612721565b6104a3612892565b6040519015158152602001610338565b6102d86104c13660046144bc565b612962565b6102d8612b3b565b6102d8612cb6565b61032b612e15565b6102d86104ec3660046144bc565b612e80565b6102d86104ff366004613e83565b612f1d565b6102d8612fba565b6102d86130f9565b6102d86105223660046144ee565b61343d565b601f546104a39060ff1681565b6040805173ffffffffffffffffffffffffffffffffffffffff858116602083015284811682840152838116606080840191909152835180840390910181526080830193849052601f547f252c9b0700000000000000000000000000000000000000000000000000000000909452925f92839283926101009004169063252c9b07906105c3908790608401614547565b606060405180830381865afa1580156105de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106029190614564565b92509250925061061283886135f0565b61061c82876135f0565b61062681866135f0565b50505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8581166020830152818301859052831515606080840191909152835180840390910181526080830193849052601f547f2e19625900000000000000000000000000000000000000000000000000000000909452925f928392839261010090041690632e196259906106bd908790608401614547565b606060405180830381865afa1580156106d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fc91906145a3565b92509250925061070c83886135f0565b6107168287613682565b61062681866136da565b6040805173ffffffffffffffffffffffffffffffffffffffff841660208201529081018290525f90606001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f160a45fc0000000000000000000000000000000000000000000000000000000083529092505f918291610100900473ffffffffffffffffffffffffffffffffffffffff169063160a45fc906107d7908690600401614547565b6040805180830381865afa1580156107f1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081591906145d8565b9150915061082382866135f0565b61082d8185613682565b5050505050565b60405161084090613aa0565b604051809103905ff080158015610859573d5f803e3d5ffd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60408051631234123460208201819052636789678982840181905262bc614e606080850182905285518086039091018152608090940190945290915f6108e182613734565b90506108fb8151600184516108f69190614604565b613682565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b15801561097d575f80fd5b505af115801561098f573d5f803e3d5ffd5b5050601f546040517f12c354ef00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1692506312c354ef91506109ed908490600401614547565b606060405180830381865afa158015610a08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2c9190614642565b5050505050505050565b5f86610a4860c0820160a08301614691565b610a5860e08a0160c08b01614691565b8888888888604051602001610a749897969594939291906147ac565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f0385307d0000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff1690630385307d90610aff908590600401614547565b5f60405180830381865afa158015610b19573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b5e9190810190614919565b8051909150610b7b90610b76368b90038b018b6149f0565b61380b565b6020810151610b9f9060020b610b9760c08b0160a08c01614691565b60020b613875565b6040810151610bbb9060020b610b9760e08b0160c08c01614691565b610bed81606001516fffffffffffffffffffffffffffffffff16886fffffffffffffffffffffffffffffffff16613682565b610c1f81608001516fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff16613682565b610c2d8160a00151866135f0565b610a2c8160c0015185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506138cd92505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610cd357602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ca8575b5050505050905090565b5f81604051602001610cf191815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f6d78dc9c0000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff1690636d78dc9c90610d7c908590600401614547565b602060405180830381865afa158015610d97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dbb9190614a6a565b9050610dc78184613682565b505050565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610f0c575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610ef5578382905f5260205f20018054610e6a90614a81565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9690614a81565b8015610ee15780601f10610eb857610100808354040283529160200191610ee1565b820191905f5260205f20905b815481529060010190602001808311610ec457829003601f168201915b505050505081526020019060010190610e4d565b505050508152505081526020019060010190610def565b50505050905090565b6040805163123412346020820181905262bc614e92820183905260016060830181905290915f9060800160405160208183030381529060405290505f610f5a82613734565b9050610f6f8151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b158015610ff1575f80fd5b505af1158015611003573d5f803e3d5ffd5b5050601f546040517f2e19625900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169250632e1962599150611061908490600401614547565b606060405180830381865afa15801561107c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2c91906145a3565b5f816040516020016110b29190614d48565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f3f49268b0000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff1690633f49268b9061113d908590600401614547565b5f60405180830381865afa158015611157573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261119c9190810190614eef565b80519091506111b7906111b26020860186614153565b6135f0565b6111fb81604001516fffffffffffffffffffffffffffffffff168460400160208101906111e49190614f21565b6fffffffffffffffffffffffffffffffff16613682565b61122881606001516fffffffffffffffffffffffffffffffff168460600160208101906111e49190614f21565b602080820151610dc79161123e90860186614f3c565b61124791614fa0565b61391f565b60606018805480602002602001604051908101604052809291908181526020018280548015610cd357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ca8575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610cd357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ca8575050505050905090565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166020830152838116828401528251808303840181526060830193849052601f547fac3e657d00000000000000000000000000000000000000000000000000000000909452925f9283926101009092049091169063ac3e657d906113a5908690606401614547565b6040805180830381865afa1580156113bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e39190615082565b915091506113f182866135f0565b61082d81856135f0565b5f85858585856040516020016114159594939291906150af565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547fb7e5fc8b0000000000000000000000000000000000000000000000000000000083529092505f91829182918291610100900473ffffffffffffffffffffffffffffffffffffffff169063b7e5fc8b906114a5908890600401614547565b5f60405180830381865afa1580156114bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115049190810190615103565b93509350935093506115168a85613682565b611544896fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff16613682565b611572886fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16613682565b6115b287878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508592506138cd915050565b50505050505050505050565b6040805162bc614e6020808301829052835180840390910181529183019092525f6115e882613734565b90506115fd8151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b15801561167f575f80fd5b505af1158015611691573d5f803e3d5ffd5b5050601f546040517f6d78dc9c00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169250636d78dc9c91506116ef908490600401614547565b602060405180830381865afa15801561170a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172e9190614a6a565b50505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610f0c578382905f5260205f2090600202016040518060400160405290815f8201805461178790614a81565b80601f01602080910402602001604051908101604052809291908181526020018280546117b390614a81565b80156117fe5780601f106117d5576101008083540402835291602001916117fe565b820191905f5260205f20905b8154815290600101906020018083116117e157829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561189557602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116118425790505b50505050508152505081526020019060010190611757565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166020830152838116828401528251808303840181526060830193849052601f547f554a709b00000000000000000000000000000000000000000000000000000000909452925f9283926101009092049091169063554a709b906113a5908690606401614547565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610f0c578382905f5260205f2001805461197090614a81565b80601f016020809104026020016040519081016040528092919081815260200182805461199c90614a81565b80156119e75780601f106119be576101008083540402835291602001916119e7565b820191905f5260205f20905b8154815290600101906020018083116119ca57829003601f168201915b505050505081526020019060010190611953565b6040805173ffffffffffffffffffffffffffffffffffffffff8581166020830152848116828401526060808301859052835180840390910181526080830193849052601f547f12c354ef00000000000000000000000000000000000000000000000000000000909452925f9283928392610100900416906312c354ef90611a86908790608401614547565b606060405180830381865afa158015611aa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac59190614642565b925092509250611ad583886135f0565b611adf82876135f0565b6106268186613682565b604080516312341234602082018190526356785678828401819052835180840385018152606090930190935291905f611b2182613734565b9050611b368151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b158015611bb8575f80fd5b505af1158015611bca573d5f803e3d5ffd5b5050601f546040517fac3e657d00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff16925063ac3e657d9150611c28908490600401614547565b6040805180830381865afa158015611c42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c669190615082565b505050505050565b5f8585858585604051602001611c889594939291906150af565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547fbb94ddd50000000000000000000000000000000000000000000000000000000083529092505f91829182918291610100900473ffffffffffffffffffffffffffffffffffffffff169063bb94ddd590611d18908890600401614547565b5f60405180830381865afa158015611d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d779190810190615103565b9350935093509350611d89848b613682565b611dc88188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506138cd92505050565b611df6836fffffffffffffffffffffffffffffffff168a6fffffffffffffffffffffffffffffffff16613682565b6115b2826fffffffffffffffffffffffffffffffff16896fffffffffffffffffffffffffffffffff16613682565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610f0c575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611f0f57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611ebc5790505b50505050508152505081526020019060010190611e47565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201525f9101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f8e4dfb9d0000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff1690638e4dfb9d90611fd5908590600401614547565b602060405180830381865afa158015611ff0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612014919061516e565b9050610dc781846135f0565b5f8761203260c0820160a08301614691565b61204260e08b0160c08c01614691565b89898989898960405160200161206099989796959493929190615189565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f60dff0710000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff16906360dff071906120eb908590600401614547565b5f60405180830381865afa158015612105573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261214a9190810190615222565b905061215a816060015189613682565b61218c81608001516fffffffffffffffffffffffffffffffff16886fffffffffffffffffffffffffffffffff16613682565b6121be8160a001516fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff16613682565b6121cc8160c00151866135f0565b61220f8160e0015185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506138cd92505050565b805161222490610b76368c90038c018c6149f0565b60208101516122409060020b610b9760c08c0160a08d01614691565b604081015161225c9060020b610b9760e08c0160c08d01614691565b505050505050505050565b5f828260405160200161227b929190615304565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547ff03fa9950000000000000000000000000000000000000000000000000000000083529092505f918291610100900473ffffffffffffffffffffffffffffffffffffffff169063f03fa99590612307908690600401614547565b5f60405180830381865afa158015612321573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123669190810190615397565b9150915061237482866138cd565b5f5b8451811015611c66576123bb82828151811061239457612394615466565b60200260200101518683815181106123ae576123ae615466565b60200260200101516138cd565b600101612376565b6040805163123412346020820181905263567856789282018390526323453456606083018190529092915f9060800160405160208183030381529060405290505f61240d82613734565b90506124228151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b1580156124a4575f80fd5b505af11580156124b6573d5f803e3d5ffd5b5050601f546040517f252c9b0700000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff16925063252c9b079150612514908490600401614547565b606060405180830381865afa15801561252f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2c9190614564565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610f0c575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561263e57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116125eb5790505b50505050508152505081526020019060010190612576565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610f0c578382905f5260205f2001805461269690614a81565b80601f01602080910402602001604051908101604052809291908181526020018280546126c290614a81565b801561270d5780601f106126e45761010080835404028352916020019161270d565b820191905f5260205f20905b8154815290600101906020018083116126f057829003601f168201915b505050505081526020019060010190612679565b6040805163123412346020808301829052835180840390910181529183019092525f61274c82613734565b90506127618151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b1580156127e3575f80fd5b505af11580156127f5573d5f803e3d5ffd5b5050601f546040517f8e4dfb9d00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169250638e4dfb9d9150612853908490600401614547565b602060405180830381865afa15801561286e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172e919061516e565b6008545f9060ff16156128a9575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015612937573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295b9190614a6a565b1415905090565b5f81604051602001612974919061552c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f27de31c10000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff16906327de31c1906129ff908590600401614547565b5f60405180830381865afa158015612a19573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612a5e91908101906155d0565b6020810151909150612a7f90612a7a60c0860160a08701615602565b6136da565b6040810151612aaa906fffffffffffffffffffffffffffffffff166111e460e0860160c08701614f21565b6060810151612ad6906fffffffffffffffffffffffffffffffff166111e4610100860160e08701614f21565b6080810151612b2690612aed61010086018661561d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506138cd92505050565b8051610dc790610b76368690038601866149f0565b6040805163123412346020820181905262bc614e8284018190528351808403850181526060909301909352905f612b7182613734565b9050612b868151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b158015612c08575f80fd5b505af1158015612c1a573d5f803e3d5ffd5b5050601f546040517f160a45fc00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff16925063160a45fc9150612c78908490600401614547565b6040805180830381865afa158015612c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6691906145d8565b60408051602080820183525f808352835181815291820190935290919081612cee565b6060815260200190600190039081612cd95790505b5090505f8282604051602001612d05929190615304565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547ff03fa9950000000000000000000000000000000000000000000000000000000083529092505f918291610100900473ffffffffffffffffffffffffffffffffffffffff169063f03fa99590612d91908690600401614547565b5f60405180830381865afa158015612dab573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612df09190810190615397565b91509150612dfe82866138cd565b612e0a81518551613682565b61082d81515f613682565b60606015805480602002602001604051908101604052809291908181526020018280548015610cd357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ca8575050505050905090565b5f81604051602001612e92919061552c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547fc4a2739e0000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff169063c4a2739e906129ff908590600401614547565b5f81604051602001612f2f9190614d48565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f771e2d570000000000000000000000000000000000000000000000000000000083529092505f9161010090910473ffffffffffffffffffffffffffffffffffffffff169063771e2d579061113d908590600401614547565b604080516312341234602082018190526323453456828401819052835180840385018152606090930190935291905f612ff282613734565b90506130078151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b158015613089575f80fd5b505af115801561309b573d5f803e3d5ffd5b5050601f546040517f554a709b00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff16925063554a709b9150611c28908490600401614547565b60408051808201825260048082527f12345678000000000000000000000000000000000000000000000000000000006020830152825181815260a0810190935290915f91816020015b60608152602001906001900390816131425790505090506040518060400160405280600481526020017f1111111100000000000000000000000000000000000000000000000000000000815250815f815181106131a1576131a1615466565b60200260200101819052506040518060400160405280600181526020017f2200000000000000000000000000000000000000000000000000000000000000815250816001815181106131f5576131f5615466565b60200260200101819052506040518060400160405280600881526020017f33333333333333330000000000000000000000000000000000000000000000008152508160028151811061324957613249615466565b60200260200101819052506040518060400160405280602081526020017f44444444444444444444444444444444444444444444444444444444444444448152508160038151811061329d5761329d615466565b60200260200101819052505f82826040516020016132bc929190615304565b60405160208183030381529060405290505f6132d782613734565b90506132ec8151600184516108f69190614604565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f3b99b53d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b15801561336e575f80fd5b505af1158015613380573d5f803e3d5ffd5b5050601f546040517ff03fa99500000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff16925063f03fa99591506133de908490600401614547565b5f60405180830381865afa1580156133f8573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c669190810190615397565b5f8686868686866040516020016134599695949392919061567e565b60405160208183030381529060405290505f805f805f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3769d62876040518263ffffffff1660e01b81526004016134ca9190614547565b5f60405180830381865afa1580156134e4573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261352991908101906156d9565b9450945094509450945061353d858d613682565b613547848c613682565b613575836fffffffffffffffffffffffffffffffff168b6fffffffffffffffffffffffffffffffff16613682565b6135a3826fffffffffffffffffffffffffffffffff168a6fffffffffffffffffffffffffffffffff16613682565b6135e28189898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506138cd92505050565b505050505050505050505050565b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b158015613670575f80fd5b505afa158015611c66573d5f803e3d5ffd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440161365a565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe34779060440161365a565b6060600182516137449190614604565b67ffffffffffffffff81111561375c5761375c614204565b6040519080825280601f01601f191660200182016040528015613786576020820181803683370190505b5090505f5b600283516137999190614604565b811015613805578281815181106137b2576137b2615466565b602001015160f81c60f81b8282815181106137cf576137cf615466565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060010161378b565b50919050565b8151815161381991906135f0565b61382b826020015182602001516135f0565b613847826040015162ffffff16826040015162ffffff16613682565b61385f826060015160020b826060015160020b613875565b613871826080015182608001516135f0565b5050565b6040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063fe74f05b9060440161365a565b6040517f97624631000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063976246319061365a908590859060040161574d565b61392b82518251613682565b5f5b8251811015610dc75761397883828151811061394b5761394b615466565b60200260200101515f015183838151811061396857613968615466565b60200260200101515f01516135f0565b6139c683828151811061398d5761398d615466565b60200260200101516020015162ffffff168383815181106139b0576139b0615466565b60200260200101516020015162ffffff16613682565b613a108382815181106139db576139db615466565b60200260200101516040015160020b8383815181106139fc576139fc615466565b60200260200101516040015160020b613875565b613a54838281518110613a2557613a25615466565b602002602001015160600151838381518110613a4357613a43615466565b6020026020010151606001516135f0565b613a98838281518110613a6957613a69615466565b602002602001015160800151838381518110613a8757613a87615466565b6020026020010151608001516138cd565b60010161392d565b6113248061577283390190565b73ffffffffffffffffffffffffffffffffffffffff81168114613ace575f80fd5b50565b5f805f60608486031215613ae3575f80fd5b8335613aee81613aad565b92506020840135613afe81613aad565b91506040840135613b0e81613aad565b809150509250925092565b8015158114613ace575f80fd5b5f805f60608486031215613b38575f80fd5b8335613b4381613aad565b9250602084013591506040840135613b0e81613b19565b5f8060408385031215613b6b575f80fd5b8235613b7681613aad565b946020939093013593505050565b5f60e08284031215613805575f80fd5b6fffffffffffffffffffffffffffffffff81168114613ace575f80fd5b8035613bbc81613b94565b919050565b5f8083601f840112613bd1575f80fd5b50813567ffffffffffffffff811115613be8575f80fd5b602083019150836020828501011115613bff575f80fd5b9250929050565b5f805f805f806101608789031215613c1c575f80fd5b613c268888613b84565b955060e0870135613c3681613b94565b9450610100870135613c4781613b94565b9350610120870135613c5881613aad565b925061014087013567ffffffffffffffff811115613c74575f80fd5b613c8089828a01613bc1565b979a9699509497509295939492505050565b602080825282518282018190525f918401906040840190835b81811015613cdf57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101613cab565b509095945050505050565b5f60208284031215613cfa575f80fd5b5035919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f82825180855260208501945060208160051b830101602085015f5b83811015613db9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403018852613da3838351613d01565b6020988901989093509190910190600101613d69565b50909695505050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613e67577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152613e516040870182613d4d565b9550506020938401939190910190600101613deb565b50929695505050505050565b5f60808284031215613805575f80fd5b5f60208284031215613e93575f80fd5b813567ffffffffffffffff811115613ea9575f80fd5b613eb584828501613e73565b949350505050565b5f8060408385031215613ece575f80fd5b8235613ed981613aad565b91506020830135613ee981613aad565b809150509250929050565b5f805f805f60808688031215613f08575f80fd5b853594506020860135613f1a81613b94565b93506040860135613f2a81613b94565b9250606086013567ffffffffffffffff811115613f45575f80fd5b613f5188828901613bc1565b969995985093965092949392505050565b5f8151808452602084019350602083015f5b82811015613fb45781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101613f74565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613e67577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526140286040880182613d01565b90506020820151915086810360208801526140438183613f62565b965050506020938401939190910190600101613fe4565b602081525f61406c6020830184613d4d565b9392505050565b5f805f60608486031215614085575f80fd5b833561409081613aad565b925060208401356140a081613aad565b929592945050506040919091013590565b5f6020820160208352808451