UNPKG

@uniswap/universal-router

Version:

Smart contracts for Universal Router

1 lines 242 kB
{"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":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"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":"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":"testCallModule","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSweepETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSweepETHInsufficientOutput","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSweepToken","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSweepTokenInsufficientOutput","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExampleModuleEvent","inputs":[{"name":"message","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60808060405234602d57600160ff195f5416175f55600160ff19600454161760045561852c90816100328239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e414611696575080631ed7831c146115ee5780632dddbcaf146112cd5780633e5e3c23146112245780633f7286f41461117b57806366d9a9a014610fba57806385226c8114610e57578063916a17c614610af8578063b1163118146108b1578063b5508aa914610721578063ba414fa6146106de578063e20c9f7114610625578063f36b55f8146104cd578063f61fc4d814610186578063fa7626d4146101465763fde72815146100ce575f80fd5b3461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610143577f2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755602073ffffffffffffffffffffffffffffffffffffffff601b54163b604051908152a180f35b80fd5b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101435760ff60209154166040519015158152f35b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014357806040517f04000000000000000000000000000000000000000000000000000000000000006020820152600181526101ee602182611b1f565b6101f6611b78565b9073ffffffffffffffffffffffffffffffffffffffff601d54166040518160208201526104d26040820152670de0b6b3a764000160608201526060815261023e608082611b1f565b61024784611bd0565b5261025183611bd0565b5073ffffffffffffffffffffffffffffffffffffffff601b5416813b156104c95784916044839260405194859384927f40c10f190000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af190811561046d5784916104b4575b50506024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa90811561046d578491610478575b5061033190611e70565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610469576040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f675cae38000000000000000000000000000000000000000000000000000000006004820152838160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561046d578491610454575b505073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561044f57610422928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401611c0a565b03925af18015610444576104335750f35b8161043d91611b1f565b6101435780f35b6040513d84823e3d90fd5b505050fd5b8161045e91611b1f565b61046957825f6103c3565b5050fd5b6040513d86823e3d90fd5b9350506020833d6020116104ac575b8161049460209383611b1f565b810103126104a85761033184935190610327565b5f80fd5b3d9150610487565b816104be91611b1f565b61046957825f6102c6565b8480fd5b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014357806040517f0400000000000000000000000000000000000000000000000000000000000000602082015260018152610535602182611b1f565b61053d611b78565b906040518360208201526104d26040820152670de0b6b3a764000060608201526060815261056c608082611b1f565b61057583611bd0565b5261057f82611bd0565b5061058c6104d231611e70565b73ffffffffffffffffffffffffffffffffffffffff601b541691823b1561044f576105f1928492670de0b6b3a76400006040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401611c0a565b03925af1801561044457610610575b5061060d6104d23161209d565b80f35b8161061a91611b1f565b61014357805f610600565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101435760405180916020600c54928381520191600c82527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915b8181106106b2576106ae856106a281870382611b1f565b604051918291826118fe565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161068b565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610143576020610717611d32565b6040519015158152f35b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101435760105461075c81611b60565b9061076a6040519283611b1f565b808252601083527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729280602084015b8383106107ae57604051806106ae8782611a86565b6040518287548060011c906001811680156108a7575b60208310811461087a578285529081156108395750600114610803575b50600192826107f585946020940382611b1f565b815201960192019194610799565b888552602085208592505b818310610823575050810160200160016107e1565b600181602092548386880101520192019161080e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b84019091019150600190506107e1565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b91607f16916107c4565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014357806040517f0400000000000000000000000000000000000000000000000000000000000000602082015260018152610919602182611b1f565b610921611b78565b906040518360208201526104d26040820152670de0b6b3a7640001606082015260608152610950608082611b1f565b61095983611bd0565b5261096382611bd0565b5073ffffffffffffffffffffffffffffffffffffffff601d541673ffffffffffffffffffffffffffffffffffffffff601b5416813b156104c95784916044839260405194859384927f40c10f190000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af190811561046d578491610ae3575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610469576040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f6a12f104000000000000000000000000000000000000000000000000000000006004820152838160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561046d57849161045457505073ffffffffffffffffffffffffffffffffffffffff601b541691823b1561044f57610422928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401611c0a565b81610aed91611b1f565b61046957825f6109f1565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014357601354610b3381611b60565b90610b416040519283611b1f565b80825260138352827f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090602084015b838310610b8457604051806106ae878261194d565b604051610b9081611b03565b825473ffffffffffffffffffffffffffffffffffffffff1681526040516001840180548083529089526020808a20908301918a915b816007840110610dd05784600197946002979460209794610c28945491818110610d9c575b818110610d68575b818110610d34575b818110610d00575b818110610ccc575b818110610c98575b818110610c66575b10610c3a575b500382611b1f565b83820152815201920192019190610b6f565b7fffffffff0000000000000000000000000000000000000000000000000000000016815286015f610c20565b828a1b7fffffffff00000000000000000000000000000000000000000000000000000000168452928901928b01610c1a565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301610c12565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301610c0a565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301610c02565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301610bfa565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301610bf2565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301610bea565b9260016101006008927fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920191610bc5565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014357601154610e9281611b60565b90610ea06040519283611b1f565b808252601183527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c689280602084015b838310610ee457604051806106ae8782611a86565b6040518287548060011c90600181168015610fb0575b60208310811461087a57828552908115610f6f5750600114610f39575b5060019282610f2b85946020940382611b1f565b815201960192019194610ecf565b888552602085208592505b818310610f5957505081016020016001610f17565b6001816020925483868801015201920191610f44565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b8401909101915060019050610f17565b91607f1691610efa565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014357601254610ff581611b60565b906110036040519283611b1f565b80825260128352827fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444602084015b83831061104657604051806106ae878261194d565b60405161105281611b03565b825473ffffffffffffffffffffffffffffffffffffffff1681526040516001840180548083529089526020808a20908301918a915b8160078401106110f457846001979460029794602097946110e2945491818110610d9c57818110610d6857818110610d3457818110610d0057818110610ccc57818110610c9857818110610c665710610c3a57500382611b1f565b83820152815201920192019190611031565b9260016101006008927fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920191611087565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101435760405180916020600e54928381520191600e82527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd915b8181106111f8576106ae856106a281870382611b1f565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016111e1565b503461014357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101435760405180916020600f54928381520191600f82527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802915b8181106112a1576106ae856106a281870382611b1f565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161128a565b50346104a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a857604051907f0400000000000000000000000000000000000000000000000000000000000000602083015260018252611335602183611b1f565b61133d611b78565b73ffffffffffffffffffffffffffffffffffffffff601d5416926040518460208201526104d26040820152670de0b6b3a7640000606082015260608152611385608082611b1f565b61138e83611bd0565b5261139882611bd0565b5073ffffffffffffffffffffffffffffffffffffffff601b5416843b156104a8575f946044869260405197889384927f40c10f190000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af180156115e3576115cd575b8293506024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa90811561046d578491611595575b5061147690611e70565b73ffffffffffffffffffffffffffffffffffffffff601b541691823b1561044f576114d3928492836040518096819582947f24856bc300000000000000000000000000000000000000000000000000000000845260048401611c0a565b03925af1801561044457611580575b50506024602073ffffffffffffffffffffffffffffffffffffffff601d5416604051928380927f70a082310000000000000000000000000000000000000000000000000000000082526104d260048301525afa801561044457829061154c575b61060d915061209d565b506020813d602011611578575b8161156660209383611b1f565b810103126104a85761060d9051611542565b3d9150611559565b8161158a91611b1f565b61014357805f6114e2565b9350506020833d6020116115c5575b816115b160209383611b1f565b810103126104a8576114768493519061146c565b3d91506115a4565b9150915f6115da91611b1f565b5f90829061140a565b6040513d5f823e3d90fd5b346104a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a857604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b81811061166a576106ae856106a281870382611b1f565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611653565b346104a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a857610120810181811067ffffffffffffffff8211176118d1576040525f815260208101905f825260408101915f835260608201905f825260808301905f825260a08401905f825260c08501955f875260e086015f81526101008701925f845260405198614f6295868b01978b891067ffffffffffffffff8a11176118d15773ffffffffffffffffffffffffffffffffffffffff8c9a81809a988c6101209f8f849c9a85602093819d82946122179039511684525116910152511660408c0152511660608a01525160808901525160a0880152511660c0860152511660e084015251166101008201520301905ff080156115e35773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000601b541617601b5560405161016180820182811067ffffffffffffffff8211176118d1578291617179833903905ff080156115e35773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000601c541617601c5560405161121d80820182811067ffffffffffffffff8211176118d15782916172da833903905ff080156115e35773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000601d541617601d555f80f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206040818301928281528451809452019201905f5b8181106119215750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611914565b602081016020825282518091526040820190602060408260051b8501019401915f905b82821061197f57505050505090565b9091929395947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087820301825284516020606081604085019373ffffffffffffffffffffffffffffffffffffffff81511686520151936040838201528451809452019201905f905b808210611a095750505060208060019296019201920190929195939495611970565b9091926020806001927fffffffff0000000000000000000000000000000000000000000000000000000087511681520194019201906119e7565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ab857505050505090565b9091929394602080611af4837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951611a43565b97019301930191939290611aa9565b6040810190811067ffffffffffffffff8211176118d157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176118d157604052565b67ffffffffffffffff81116118d15760051b60200190565b60408051909190611b898382611b1f565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b828110611bbf57505050565b806060602080938501015201611bb3565b805115611bdd5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90611c1d90604083526040830190611a43565b906020818303910152815180825260208201916020808360051b8301019401925f915b838310611c4f57505050505090565b9091929394602080611c8b837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951611a43565b97019301930191939290611c40565b6020906004927f70ca10bb0000000000000000000000000000000000000000000000000000000082528051928391018483015e01015f815290565b3d15611d2d573d9067ffffffffffffffff82116118d15760405191611d2260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184611b1f565b82523d5f602084013e565b606090565b5f5460081c60ff1615611d4a5760ff5f5460081c1690565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d3b611d685790565b505f806040516020611e306004828401737109709ecfa91a80626ff3989d68f67f5b1dd12d81527f6661696c65640000000000000000000000000000000000000000000000000000604086015260408552611dc4606086611b1f565b604051938491818301967f667f9d70000000000000000000000000000000000000000000000000000000008852518091602485015e8201018281018781525003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611b1f565b519082737109709ecfa91a80626ff3989d68f67f5b1dd12d5af150611e53611cd5565b6020818051810103126104a8576020015180151581036104a85790565b80611e785750565b60807fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8917f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f508260405160208152602260208201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d0000000000000000000000000000000000000000000000000000000000006060820152a1828260405160408152600a60408201527f202045787065637465640000000000000000000000000000000000000000000060608201525f6020820152a16040519060408252600a60408301527f2020202041637475616c0000000000000000000000000000000000000000000060608301526020820152a1737109709ecfa91a80626ff3989d68f67f5b1dd12d3b611fd8575b6101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f5416175f55565b5f80604051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208201527f6661696c6564000000000000000000000000000000000000000000000000000060408201526001606082015260608152612033608082611b1f565b60405161207481612048602082019485611c9a565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611b1f565b519082737109709ecfa91a80626ff3989d68f67f5b1dd12d5af150612097611cd5565b50611fac565b670de0b6b3a764000081036120af5750565b60807fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8917f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f508260405160208152602260208201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d0000000000000000000000000000000000000000000000000000000000006060820152a1828260405160408152600a60408201527f20204578706563746564000000000000000000000000000000000000000000006060820152670de0b6b3a76400006020820152a16040519060408252600a60408301527f2020202041637475616c0000000000000000000000000000000000000000000060608301526020820152a1737109709ecfa91a80626ff3989d68f67f5b1dd12d3b611fd8576101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f5416175f5556fe6101a0604052346102d657604051601f614f6238819003918201601f19168301916001600160401b038311848410176102c257808492610120946040528339810103126102d6576040519061012082016001600160401b038111838210176102c25760405261006d816102f9565b825261007b602082016102f9565b6020830190815261008e604083016102f9565b604084019081526100a1606084016102f9565b93606081019485526080840151946080820195865260a08501519560a083019687526100cf60c087016102f9565b9660c084019788526100f66101006100e960e08a016102f9565b988960e0880152016102f9565b97886101008601526101066102da565b6001600160a01b03988916815298881660208a0190815290519451965190989796871696908116959416936101396102da565b968752602087019586525192519151905160405190936001600160a01b0393841693169060808101906001600160401b038211818310176102c257604091825282815260208101948552808201938452606001948552608091909152905160a05290516001600160a01b0390811660c052915160e052610100929092529151821661012052915181166101405291518216610160529151166101805251614c54908161030e82396080518181816115d90152818161182701526137e4015260a0518181816115b80152818161184901526137c3015260c05181612ee6015260e05181612f39015261010051818181609e01528181610449015281816105b1015281816123240152818161288d0152818161431b015281816143ac015281816144b4015281816146350152614a45015261012051818181602f01528181611cb40152611e270152610140518181816112450152818161206201526133610152610160518181816106e301528181612458015261255101526101805181818161052701526129860152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60408051919082016001600160401b038111838210176102c257604052565b51906001600160a01b03821682036102d65756fe60c060405260043610156100c6575b3615610018575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580610086575b61005e57005b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415610058565b5f3560e01c806324856bc3146108685780633593564c14610707578063817122dc1461069957806391dd73461461054b578063d0c9f6cb146104dd578063d737d0c71461046d578063dc4c90d3146103ff5763fa461e330361000e57346102e05760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760243560043560443567ffffffffffffffff81116102e057610177903690600401610942565b5f8313918215806103f5575b6103cd578181016040828203126102e057813567ffffffffffffffff81116102e057820181601f820112156102e05780356101bd81612c69565b926101cb6040519485612c28565b818452602082840101116102e0575f928160208094018483013701015260208101359173ffffffffffffffffffffffffffffffffffffffff83168093036102e05761021591612e12565b90601790602b83106103a5578035968760601c9561024362ffffff8585013560601c9a60481c168a89612e65565b73ffffffffffffffffffffffffffffffffffffffff3391160361037d571561037357508685105b156102805750505061027e93503391612f86565b005b91935091939482602b0180602b116103465784106102e457508282116102e05781019103907f80000000000000000000000000000000000000000000000000000000000000008410156102e05761027e936102db3391612ca3565b613018565b5f80fd5b925050507faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6929291925c821161031e5761027e923391612f86565b7f739dbe52000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b955084871061026a565b7f32b13d91000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f3b99b53d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f316cf0eb000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f851315610183565b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760207f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e05761059a903690600401610942565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610671576105e091613404565b90818303610649575f5b83811061061d57610619604051610602602082612c28565b5f81526040519182916020835260208301906109a1565b0390f35b8061064361062e60019387896109e4565b3560f81c61063d838787610a6e565b91613ac3565b016105ea565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e057610751903690600401610942565b60243567ffffffffffffffff81116102e057610771903690600401610970565b916044354211610840573330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b5f7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b61027e93610a89565b7f5bf6f916000000000000000000000000000000000000000000000000000000005f5260045ffd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e0576108b2903690600401610942565b60243567ffffffffffffffff81116102e0576108d2903690600401610970565b913330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b9181601f840112156102e05782359167ffffffffffffffff83116102e057602083818601950101116102e057565b9181601f840112156102e05782359167ffffffffffffffff83116102e0576020808501948460051b0101116102e057565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b908210156109f0570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102e0570180359067ffffffffffffffff82116102e0576020019181360383136102e057565b908210156109f057610a859160051b810190610a1d565b9091565b9290808203612bb7579291905f915b848310610aa6575050505050565b9091929394610ab68487876109e4565b3592610ac3858285610a6e565b979092606097603f8760f81c1695600196602181105f14612a1c5760108110156122b15760088110156115245780610eeb5750610b0560208701359b87612e3a565b9590608088013515610ee4577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9c5b610b3f89356131e2565b9d9188816080527f80000000000000000000000000000000000000000000000000000000000000008314610e58575b50505b604260a052602b7f80000000000000000000000000000000000000000000000000000000000000008210156102e05760a0518f908a10610e52575030915b8982116102e05760409173ffffffffffffffffffffffffffffffffffffffff5f6080513595610cb2610c2b610c5d85610c018b60601c6017608051013560601c62ffffff8183109e60481c1691612e65565b16968a8614610e37576401000276a49b5b878b519485938d60208601526060850190608051612ccf565b91168b830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b8488519a8b98899788967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528b6024870152604486015216606484015260a0608484015260a48301906109a1565b03925af1908115610e2c575f905f92610df0575b610cd6935015610de95750612ca3565b60a0519096908110610d1d573090806017116102e0576080805160170190527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90196610b71565b50979396929a50979490989360409091013511610dc1575b159081610d96575b50610d4f575060010191909392610a98565b90610d926040519283927f2c4029e900000000000000000000000000000000000000000000000000000000845260048401526040602484015260448301906109a1565b0390fd5b7f8000000000000000000000000000000000000000000000000000000000000000915016155f610d3d565b7f39d35496000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050612ca3565b9150506040823d8211610e24575b81610e0b60409383612c28565b810103126102e057816020610cd6935191015191610cc6565b3d9150610dfe565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259b610c12565b91610baf565b6014919250106103a5576020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301523560601c5afa908115610e2c575f91610eb3575b505f80610b6e565b90506020813d8211610edc575b81610ecd60209383612c28565b810103126102e057515f610eab565b3d9150610ec0565b309c610b35565b6001819c929a97939b96999598949c145f14611024575090610f1260208201359282612e3a565b60808301351561101d577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b6040610f4c85356131e2565b9401357faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d7f80000000000000000000000000000000000000000000000000000000000000008510156102e057610fa6936102db86612ca3565b9091901561100e5750610fb890612ca3565b03610fe6575f7faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d5b610d35565b7fd4e0248e000000000000000000000000000000000000000000000000000000005f5260045ffd5b6110189150612ca3565b610fb8565b3091610f40565b6002810361106e5750610fe191604081013591507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c61106760208301356131e2565b9135613348565b93949193909290600381036112a1575050508135820163ffffffff60208401351683019163ffffffff83351693602080850194860101910110611294577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c926040519273ffffffffffffffffffffffffffffffffffffffff60208501957f2a2d80d10000000000000000000000000000000000000000000000000000000087521660248501526060604485015260e484019280357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156102e05781016020813591019467ffffffffffffffff82116102e0578160071b360386136102e05781906060608489015252610104860194905f905b80821061127657505050936111ff5f9694829461122b9460408973ffffffffffffffffffffffffffffffffffffffff6111c360208e9d01612d3c565b1660a4880152013560c48601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858403016064860152612ccf565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b91610d35565b909195608080826112896001948b612d9d565b019701920190611187565b633b99b53d5f526004601cfd5b91949390925090600481036113fa57506112be60208201356131e2565b9073ffffffffffffffffffffffffffffffffffffffff8060408301351691351680155f1461133457504790811061130c57806112fc575b5050610d35565b611305916134c8565b5f806112f5565b7f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b91604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481875afa928315610e2c575f936113c7575b50821061139f578161138e575b505050610d35565b61139792613a14565b5f8080611386565b7f675cae38000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092506020813d82116113f2575b816113e260209383612c28565b810103126102e05751915f611379565b3d91506113d5565b600581036114215750806040610fe19201359061141a60208201356131e2565b903561326c565b600681036114f9575060408101359073ffffffffffffffffffffffffffffffffffffffff61145260208301356131e2565b9135168061146e5750611468610fe192476139d2565b906134c8565b906040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481865afa908115610e2c575f916114c6575b50610fe1936114c0916139d2565b91613a14565b90506020813d82116114f1575b816114e060209383612c28565b810103126102e05751610fe16114b2565b3d91506114d3565b7fd76a1e9e000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6008819c929a97939b96999598949c145f146117d9575061154a6020830135918361319d565b906080840135156117d2577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61158385356131e2565b9282156109f057611593826131c1565b83600110156109f0576115b56115fd916115af602086016131c1565b906141ee565b907f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614226565b9485816117b8575b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82018281116103465761165a61165573ffffffffffffffffffffffffffffffffffffffff92858561324f565b6131c1565b1693604051927f70a0823100000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8516928360048601526020856024818a5afa948515610e2c575f9561177b575b50946116c8929160209596613586565b6024604051809581937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa918215610e2c575f92611747575b506040611719929301359261325f565b1015610d35577f849eaf98000000000000000000000000000000000000000000000000000000005f5260045ffd5b91506020823d8211611773575b8161176160209383612c28565b810103126102e0579051906040611709565b3d9150611754565b92919450946020833d82116117b0575b8161179860209383612c28565b810103126102e05791519194919390916116c86116b8565b3d915061178b565b6117ca926117c5856131c1565b612f86565b5f8085611605565b3091611579565b60098103611b4357506117ec908261319d565b608083013515611b3c577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61182484356131e2565b917f0000000000000000000000000000000000000000000000000000000000000000937f0000000000000000000000000000000000000000000000000000000000000000955f9560028510611b14576020820135977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601868111610346579190825b6118fd575050506040013586116118d55782156109f057610fe195856118d0926117c5856131c1565b613586565b7f8ab0bc16000000000000000000000000000000000000000000000000000000005f5260045ffd5b90919897507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901978989116103465761193e6116556119609a898961324f565b61195561194f6116558d8b8b61324f565b826141ee565b8185879d939d614226565b90604051907f0902f1ac00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff87165afa918215610e2c575f905f93611ab7575b5073ffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8082931694169d169116145f14611ab15799905b9980158015611aa9575b611a815782611a0891613988565b916103e88302928084046103e8149015171561034657611a279161325f565b6103e58102908082046103e5149015171561034657611a459161399b565b6001810180911161034657988015610346577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019190826118a7565b7f7b9c8916000000000000000000000000000000000000000000000000000000005f5260045ffd5b5081156119fa565b906119f0565b6dffffffffffffffffffffffffffff80945073ffffffffffffffffffffffffffffffffffffffff9250611b01839260603d8111611b0d575b611af98183612c28565b810190613550565b509590935050506119b7565b503d611aef565b7f20db8267000000000000000000000000000000000000000000000000000000005f5260045ffd5b309161181a565b93949193909290600a8103611c445750505063ffffffff60c08301351682019063ffffffff82351690836020808501948401019101106112945760a061122b5f946111ff86957f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9560405195869473ffffffffffffffffffffffffffffffffffffffff60208701997f2b67b570000000000000000000000000000000000000000000000000000000008b52166024870152611c026044870182612d9d565b73ffffffffffffffffffffffffffffffffffffffff611c2360808301612d3c565b1660c4870152013560e4850152610100610104850152610124840191612ccf565b91949390929091600b8103611dfb575050611c64602082013591356131e2565b90807f80000000000000000000000000000000000000000000000000000000000000008103611dcc575050475b80611c9d575050610d35565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e057604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f8260048186885af1918215610e2c5773ffffffffffffffffffffffffffffffffffffffff92611dbc575b501690308203611d3f575b506112f5565b60446020925f60405195869485937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af18015610e2c57611d8e575b8080611d39565b611dae9060203d8111611db5575b611da68183612c28565b810190613237565b505f611d87565b503d611d9c565b5f611dc691612c28565b5f611d2e565b471015611c91577f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b600c8103611f65575050611e0f81356131e2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa928315610e2c575f93611f31575b5060200135821061130c5781611ea357505050610d35565b803b156102e0575f80916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528760048401525af18015610e2c57611f21575b503073ffffffffffffffffffffffffffffffffffffffff831603611f11575b80611386565b611f1a916134c8565b5f80611f0b565b5f611f2b91612c28565b5f611eec565b9092506020813d8211611f5d575b81611f4c60209383612c28565b810103126102e05751916020611e8b565b3d9150611f3f565b600d819c939c9b929597989b99949699145f146121ac57508a358b0198893594611f976020808d019e8d030187612f79565b116103a55773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c169a935f5b8681101561203d578c73ffffffffffffffffffffffffffffffffffffffff61200760208f8560071b01016131c1565b160361201557600101611fd8565b7fe7002877000000000000000000000000000000000000000000000000000000005f5260045ffd5b50989593979694929b919a50985073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102e0576040517f0d58b1db000000000000000000000000000000000000000000000000000000008152602060048201526024810184905292839160448301915f905b8082106120fe5750505091815f81819503925af18015610e2c576120ee575b50610d35565b5f6120f891612c28565b5f6120e8565b9193509160808060019273ffffffffffffffffffffffffffffffffffffffff61212688612d3c565b16815273ffffffffffffffffffffffffffffffffffffffff61214a60208901612d3c565b16602082015273ffffffffffffffffffffffffffffffffffffffff61217160408901612d3c565b16604082015273ffffffffffffffffffffffffffffffffffffffff61219860608901612d3c565b1660608201520194019201859392916120c9565b80929b93989550600e919a97969450145f146114f95750604051907f70a0823100000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff813516600483015260208260248173ffffffffffffffffffffffffffffffffffffffff84860135165afa918215610e2c575f9261227d575b5060400135111580610fe15791506040517fa328167200000000000000000000000000000000000000000000000000000000602082015260048152611270602482612c28565b9091506020813d82116122a9575b8161229860209383612c28565b810103126102e05751906040612237565b3d915061228b565b6010819c929a97939b96999598949c145f146123cc575061230a915f9160405193849283927f48c89491000000000000000000000000000000000000000000000000000000008452602060048501526024840191612ccf565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610e2c576123565750610d35565b3d805f833e6123658183612c28565b8101906020818303126102e05780519067ffffffffffffffff82116102e0570181601f820112156102e057805161239b81612c69565b926123a96040519485612c28565b818452602082840101116102e0575f928160208094018483015e0101525f6120e8565b80929495506011919350145f146124ae5750907fffffffff000000000000000000000000000000000000000000000000000000008135167f7ac2ff7b0000000000000000000000000000000000000000000000000000000081036124835750815f929183926040519283928337810183815203908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b7ff801e525000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b601281036127ad57507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c917fffffffff000000000000000000000000000000000000000000000000000000008135167f0c49ccbe0000000000000000000000000000000000000000000000000000000081148015612784575b801561275b575b156124835750600481013573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016936040517f6352211e000000000000000000000000000000000000000000000000000000008152826004820152602081602481895afa908115610e2c5773ffffffffffffffffffffffffffffffffffffffff9182915f9161273d575b50169116908082149182156126a9575b8215612638575b50501561260d575091815f809481946040519384928337810182815203925af190611270612d0d565b7fbb25d4c5000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b909150604051917fe985e9c500000000000000000000000000000000000000000000000000000000835260048301526024820152602081604481885afa908115610e2c575f9161268b575b505f806125e4565b6126a3915060203d8111611db557611da68183612c28565b5f612683565b91506040517f081812fc0000000000000000000000000000000000000000000000000000000081528360048201526020816024818a5afa908115610e2c57839173ffffffffffffffffffffffffffffffffffffffff915f9161270f575b501614916125dd565b612730915060203d8111612736575b6127288183612c28565b81019061349c565b5f612706565b503d61271e565b612755915060203d8111612736576127288183612c28565b5f6125cd565b507f42966c6800000000000000000000000000000000000000000000000000000000811461252f565b507ffc6f7865000000000000000000000000000000000000000000000000000000008114612528565b601381036128b85750505f809160405173ffffffffffffffffffffffffffffffffffffffff60a060208301937f6276cbbe0000000000000000000000000000000000000000000000000000000085528261280682612d3c565b1660248501528261281960208301612d3c565b16604485015262ffffff61282f60408301612d5d565b16606485015261284160608201612d6d565b60020b60848501528261285660808301612d3c565b1660a485015201351660c482015260c4815261287360e482612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b601481036114f957507fffffffff000000000000000000000000000000000000000000000000000000008235167fdd46508f0000000000000000000000000000000000000000000000000000000081036124835750806004116102e05761294d6129477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830160048501612e12565b90612e12565b5f5b8181106129b1575050505f91829147918160405192839283378101848152039173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b6129bc8183856109e4565b3560f81c8015908115612a11575b8115612a06575b506129de5760010161294f565b7f5d1d0f9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b60039150145f6129d1565b6001811491506129ca565b9098959199506021819b939b989598979497145f146114f9575090612a4091613404565b612a836040959395519460208601967f24856bc3000000000000000000000000000000000000000000000000000000008852604060248801526064870191612ccf565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858503016044860152818452602084019160208160051b86010194845f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603015b848310612b3d5750505050505050509181612b2e5f94938594037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b519082305af190611270612d0d565b90919293949596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08582030188528835828112156102e0578301906020823592019167ffffffffffffffff81116102e05780360383136102e057612ba760209283928b95612ccf565b9a01980196959493019190612ae9565b7fff633a38000000000000000000000000000000000000000000000000000000005f5260045ffd5b60a0810190811067ffffffffffffffff821117612bfb57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bfb57604052565b67ffffffffffffffff8111612bfb57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7f80000000000000000000000000000000000000000000000000000000000000008114610346575f0390565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b3d15612d37573d90612d1e82612c69565b91612d2c6040519384612c28565b82523d5f602084013e565b606090565b359073ffffffffffffffffffffffffffffffffffffffff821682036102e057565b359062ffffff821682036102e057565b35908160020b82036102e057565b908160209103126102e0575190565b359065ffffffffffff821682036102e057565b65ffffffffffff612e0c6060809373ffffffffffffffffffffffffffffffffffffffff612dc982612d3c565b16865273ffffffffffffffffffffffffffffffffffffffff612ded60208301612d3c565b16602087015283612e0060408301612d8a565b16604087015201612d8a565b16910152565b909163ffffffff82351682019263ffffffff8435169260208086019585010191011061129457565b909163ffffffff60608301351682019263ffffffff8435169260208086019585010191011061129457565b9073ffffffffffffffffffffffffffffffffffffffff9283821684841611612f71575b62ffffff90846040519381602086019616865216604084015216606082015260608152612eb6608082612c28565b5190206040517fff00000000000000000000000000000000000000000000000000000000000000602082019081527f000000000000000000000000000000000000000000000000000000000000000060601b7fffffffffffffff