@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 220 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_fuzz_erc721PermitForAll_invalidSignatureForPermit","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721PermitForAll_permitNonceUsed","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721PermitForAll_revokedNonceUsed","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721Permit_invalidSignatureForAll","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permitForAll_SignatureDeadlineExpired","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permitForAll_caller","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permitForAll_invalidSigner","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permitForAll_nonceAlreadyUsed","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permitForAll_operator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_permitForAllHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_fuzz_setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_setApprovalForAll_revoke","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_permitForAllTypeHash","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"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":"0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602b575f80fd5b50617c54806100395f395ff3fe608060405234801561000f575f80fd5b50600436106101a5575f3560e01c806364aaf624116100e8578063b5508aa911610093578063ceed2e131161006e578063ceed2e1314610323578063e20c9f7114610336578063fa053aa51461033e578063fa7626d414610351575f80fd5b8063b5508aa9146102f0578063ba414fa6146102f8578063cdc92a4e14610310575f80fd5b8063916a17c6116100c3578063916a17c6146102cb578063a0ef7065146102e0578063b0464fdc146102e8575f80fd5b806364aaf6241461028e57806366d9a9a0146102a157806385226c81146102b6575f80fd5b80633f7286f4116101535780635007b0721161012e5780635007b07214610242578063549e09d814610255578063576ff86e146102685780636433f1be1461027b575f80fd5b80633f7286f41461021457806342c809501461021c5780634bfc39c61461022f575f80fd5b80632ade3880116101835780632ade3880146101e45780632f282050146101f95780633e5e3c231461020c575f80fd5b80630a9254e4146101a95780630fb27491146101b35780631ed7831c146101c6575b5f80fd5b6101b161035e565b005b6101b16101c13660046155ee565b61054a565b6101ce6109eb565b6040516101db9190615605565b60405180910390f35b6101ec610a58565b6040516101db91906156a9565b6101b16102073660046157dc565b610ba1565b6101ce61128f565b6101ce6112fa565b6101b161022a3660046157dc565b611365565b6101b161023d3660046155ee565b611604565b6101b16102503660046157dc565b611b34565b6101b16102633660046157dc565b612137565b6101b16102763660046157dc565b612484565b6101b161028936600461580b565b612cde565b6101b161029c3660046155ee565b612da8565b6102a9613155565b6040516101db91906158aa565b6102be6132ce565b6040516101db9190615946565b6102d3613399565b6040516101db91906159bb565b6101b161349c565b6102d36134c8565b6102be6135cb565b610300613696565b60405190151581526020016101db565b6101b161031e366004615a5d565b613766565b6101b16103313660046157dc565b613f71565b6101ce61452b565b6101b161034c3660046155ee565b614596565b601f546103009060ff1681565b61039c6040518060400160405280600581526020017f414c494345000000000000000000000000000000000000000000000000000000815250614dcd565b602155602080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117815560408051808201909152600381527f424f4200000000000000000000000000000000000000000000000000000000009181019190915261042390614dcd565b602355602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055604080518082018252601481527f4d6f636b204552433732315065726d69745f763400000000000000000000000060208083019190915282518084018452600781527f4d4f434b373231000000000000000000000000000000000000000000000000009181019190915291519091906104e3906155e1565b6104ee929190615a94565b604051809103905ff080158015610507573d5f803e3d5ffd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156105c6575f80fd5b505af11580156105d8573d5f803e3d5ffd5b5050601f546040517f05c1ee200000000000000000000000000000000000000000000000000000000081526004810185905261010090910473ffffffffffffffffffffffffffffffffffffffff1692506305c1ee2091506024015f604051808303815f87803b158015610649575f80fd5b505af115801561065b573d5f803e3d5ffd5b50506022544292505f91506106899073ffffffffffffffffffffffffffffffffffffffff1660018585614f28565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015610704573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107289190615ac1565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290526022547f06447d5600000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff1660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561081a575f80fd5b505af115801561082c573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1fb09b80000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b1580156108b2575f80fd5b505af11580156108c4573d5f803e3d5ffd5b5050601f546020546022546040517f3aea60f000000000000000000000000000000000000000000000000000000000815261010090930473ffffffffffffffffffffffffffffffffffffffff9081169550633aea60f0945061093893928116929116906001908c908e908990600401615afa565b5f604051808303815f87803b15801561094f575f80fd5b505af1158015610961573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156109cc575f80fd5b505af11580156109de573d5f803e3d5ffd5b5050505050505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a23575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610b98575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b81578382905f5260205f20018054610af690615b64565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2290615b64565b8015610b6d5780601f10610b4457610100808354040283529160200191610b6d565b820191905f5260205f20905b815481529060010190602001808311610b5057829003601f168201915b505050505081526020019060010190610ad9565b505050508152505081526020019060010190610a7b565b50505050905090565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015610c1d575f80fd5b505af1158015610c2f573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ca0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc49190615bb5565b90506001425f610cd685858585615092565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015610d51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d759190615ac1565b60408051602080820185905281830184905260f886901b7fff00000000000000000000000000000000000000000000000000000000000000166060830152825160418184030181526061830193849052601f5491546022547fe985e9c50000000000000000000000000000000000000000000000000000000090955273ffffffffffffffffffffffffffffffffffffffff90811660658501529384166085840152959850939650919450610e79926101009004169063e985e9c59060a5015b602060405180830381865afa158015610e4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e739190615bcc565b5f615187565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260088a901c602482018190529260ff8b1692610f36926001851b9261010090049091169063502e1a16906044015b602060405180830381865afa158015610f0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2f9190615bb5565b165f61520d565b6022546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015610fb2575f80fd5b505af1158015610fc4573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f815e1d64000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b15801561104a575f80fd5b505af115801561105c573d5f803e3d5ffd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633aea60f060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660225f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018c8e896040518763ffffffff1660e01b815260040161110896959493929190615afa565b5f604051808303815f87803b15801561111f575f80fd5b505af1158015611131573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561119c575f80fd5b505af11580156111ae573d5f803e3d5ffd5b5050601f546020546022546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152611220945061010090920416915063e985e9c590604401610e34565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018590526109de926001851b92610100909104169063502e1a1690604401610ef0565b60606018805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a23575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a23575050505050905090565b601f546040517fe985e9c500000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526113ca926101009004169063e985e9c590604401610e34565b601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a4015f604051808303815f87803b158015611466575f80fd5b505af1158015611478573d5f803e3d5ffd5b50506040516001815273ffffffffffffffffffffffffffffffffffffffff841692503091507f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319060200160405180910390a3601f546040517fa22cb46500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600160248301526101009092049091169063a22cb465906044015f604051808303815f87803b158015611541575f80fd5b505af1158015611553573d5f803e3d5ffd5b5050601f546040517fe985e9c500000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301526116019450610100909204909116915063e985e9c5906044015b602060405180830381865afa1580156115d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fa9190615bcc565b6001615187565b50565b6022545f9061162c9073ffffffffffffffffffffffffffffffffffffffff1660018442614f28565b6023546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa1580156116a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116cb9190615ac1565b60408051602080820185905281830184905260f886901b7fff00000000000000000000000000000000000000000000000000000000000000166060830152825160418184030181526061830193849052601f5491546022547fe985e9c50000000000000000000000000000000000000000000000000000000090955273ffffffffffffffffffffffffffffffffffffffff9081166065850152938416608584015295985093965091945061178e926101009004169063e985e9c59060a501610e34565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600889901c602482018190529260ff8a1692611809926001851b9261010090049091169063502e1a1690604401610ef0565b6022546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611885575f80fd5b505af1158015611897573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f815e1d64000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b15801561191d575f80fd5b505af115801561192f573d5f803e3d5ffd5b5050601f546020546022546040517f3aea60f000000000000000000000000000000000000000000000000000000000815261010090930473ffffffffffffffffffffffffffffffffffffffff9081169550633aea60f094506119a3939281169291169060019042908f908b90600401615afa565b5f604051808303815f87803b1580156119ba575f80fd5b505af11580156119cc573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611a37575f80fd5b505af1158015611a49573d5f803e3d5ffd5b5050601f546020546022546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152611abb945061010090920416915063e985e9c590604401610e34565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101859052611b2a926001851b92610100909104169063502e1a1690604401610ef0565b5050505050505050565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611bb0575f80fd5b505af1158015611bc2573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611c33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c579190615bb5565b90506001425f611c6985848085614f28565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015611ce4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d089190615ac1565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f081812fc000000000000000000000000000000000000000000000000000000008352600483018b9052909250611e219161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc906024015b602060405180830381865afa158015611df7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1b9190615be7565b5f615265565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260088a901c602482018190529260ff8b1692611e9c926001851b9261010090049091169063502e1a1690604401610ef0565b6022546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611f18575f80fd5b505af1158015611f2a573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f815e1d64000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b158015611fb0575f80fd5b505af1158015611fc2573d5f803e3d5ffd5b5050601f546022546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff9081169450630f5730f1935061202e929116908e908d908f908a90600401615c02565b5f604051808303815f87803b158015612045575f80fd5b505af1158015612057573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156120c2575f80fd5b505af11580156120d4573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018e9052611220935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401611ddc565b601f546040517fe985e9c500000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015261219c926101009004169063e985e9c590604401610e34565b601f546040517fa22cb46500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600160248301526101009092049091169063a22cb465906044015f604051808303815f87803b158015612213575f80fd5b505af1158015612225573d5f803e3d5ffd5b5050601f546040517fe985e9c500000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301526122919450610100909204909116915063e985e9c5906044016115bb565b601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a4015f604051808303815f87803b15801561232d575f80fd5b505af115801561233f573d5f803e3d5ffd5b50506040515f815273ffffffffffffffffffffffffffffffffffffffff841692503091507f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319060200160405180910390a3601f546040517fa22cb46500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f60248301526101009092049091169063a22cb465906044015f604051808303815f87803b158015612406575f80fd5b505af1158015612418573d5f803e3d5ffd5b5050601f546040517fe985e9c500000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301526116019450610100909204909116915063e985e9c590604401610e34565b6020546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e562906024015f6040518083038186803b158015612506575f80fd5b505afa158015612518573d5f803e3d5ffd5b50506020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015612598575f80fd5b505af11580156125aa573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af115801561261b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061263f9190615bb5565b905060015f61265084838042614f28565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa1580156126cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126ef9190615ac1565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f081812fc000000000000000000000000000000000000000000000000000000008352600483018a90529092506127c79161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc90602401611ddc565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528a821660248201526128339261010090049091169063e985e9c590604401610e34565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600889901c602482018190529260ff8a16926128ae926001851b9261010090049091169063502e1a1690604401610ef0565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612926575f80fd5b505af1158015612938573d5f803e3d5ffd5b5050601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a4015f604051808303815f87803b1580156129d8575f80fd5b505af11580156129ea573d5f803e3d5ffd5b5050602080546040516001815273ffffffffffffffffffffffffffffffffffffffff8f8116955090911692507f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3601f546020546040517f3aea60f000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff610100909304831692633aea60f092612aab929116908e9060019042908f908b90600401615afa565b5f604051808303815f87803b158015612ac2575f80fd5b505af1158015612ad4573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612b3f575f80fd5b505af1158015612b51573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018d9052612bb4935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401611ddc565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528c82166024820152612c209261010090049091169063e985e9c5906044016115bb565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101859052612cd2926001851b92610100909104169063502e1a16906044015b602060405180830381865afa158015612ca6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cca9190615bb5565b16600261520d565b50505050505050505050565b604080517f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76602080830182905273ffffffffffffffffffffffffffffffffffffffff881683850181905287151560608501526080840187905260a080850187905285518086038201815260c0860196879052805193019290922092855260e0840190815260018816610100850190815261012085018881526101409095018781529286205f96879052918690528590529284905292909252612da19082906152d3565b5050505050565b602154602054602254612dd8929173ffffffffffffffffffffffffffffffffffffffff908116911660018561532b565b6022545f90612e009073ffffffffffffffffffffffffffffffffffffffff1660018442614f28565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015612e7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e9f9190615ac1565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290526020547f06447d5600000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff1660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612f91575f80fd5b505af1158015612fa3573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1fb09b80000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b158015613029575f80fd5b505af115801561303b573d5f803e3d5ffd5b5050601f546020546022546040517f3aea60f000000000000000000000000000000000000000000000000000000000815261010090930473ffffffffffffffffffffffffffffffffffffffff9081169550633aea60f094506130af939281169291169060019042908d908990600401615afa565b5f604051808303815f87803b1580156130c6575f80fd5b505af11580156130d8573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613143575f80fd5b505af1158015612cd2573d5f803e3d5ffd5b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610b98578382905f5260205f2090600202016040518060400160405290815f820180546131a890615b64565b80601f01602080910402602001604051908101604052809291908181526020018280546131d490615b64565b801561321f5780601f106131f65761010080835404028352916020019161321f565b820191905f5260205f20905b81548152906001019060200180831161320257829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156132b657602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116132635790505b50505050508152505081526020019060010190613178565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610b98578382905f5260205f2001805461330e90615b64565b80601f016020809104026020016040519081016040528092919081815260200182805461333a90615b64565b80156133855780601f1061335c57610100808354040283529160200191613385565b820191905f5260205f20905b81548152906001019060200180831161336857829003601f168201915b5050505050815260200190600101906132f1565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610b98575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561348457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134315790505b505050505081525050815260200190600101906133bc565b6134c67f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76806152d3565b565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610b98575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156135b357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116135605790505b505050505081525050815260200190600101906134eb565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610b98578382905f5260205f2001805461360b90615b64565b80601f016020809104026020016040519081016040528092919081815260200182805461363790615b64565b80156136825780601f1061365957610100808354040283529160200191613682565b820191905f5260205f20905b81548152906001019060200180831161366557829003601f168201915b5050505050815260200190600101906135ee565b6008545f9060ff16156136ad575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801561373b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061375f9190615bb5565b1415905090565b6020546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e562906024015f6040518083038186803b1580156137e8575f80fd5b505afa1580156137fa573d5f803e3d5ffd5b50506020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b15801561387a575f80fd5b505af115801561388c573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156138fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139219190615bb5565b905060015f61393284838042614f28565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa1580156139ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139d19190615ac1565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f081812fc000000000000000000000000000000000000000000000000000000008352600483018a9052909250613aa99161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc90602401611ddc565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528a82166024820152613b159261010090049091169063e985e9c590604401610e34565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600889901c602482018190529260ff8a1692613b90926001851b9261010090049091169063502e1a1690604401610ef0565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613c08575f80fd5b505af1158015613c1a573d5f803e3d5ffd5b5050601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a4015f604051808303815f87803b158015613cba575f80fd5b505af1158015613ccc573d5f803e3d5ffd5b5050602080546040516001815273ffffffffffffffffffffffffffffffffffffffff8f8116955090911692507f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3601f546020546040517f3aea60f000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff610100909304831692633aea60f092613d8d929116908e9060019042908f908b90600401615afa565b5f604051808303815f87803b158015613da4575f80fd5b505af1158015613db6573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613e21575f80fd5b505af1158015613e33573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018d9052613e96935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401611ddc565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528c82166024820152613f029261010090049091169063e985e9c5906044016115bb565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018590526109de926001851b92610100909104169063502e1a1690604401612c8b565b5f600190505f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663796b89b96040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fe2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140069190615bb5565b90505f6140168460018585614f28565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015614091573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140b59190615ac1565b60408051602080820185905281830184905260f886901b7fff00000000000000000000000000000000000000000000000000000000000000166060830152825160418184030181526061830193849052601f5491547fe985e9c50000000000000000000000000000000000000000000000000000000090945273ffffffffffffffffffffffffffffffffffffffff93841660658401528d84166085840152959850939650919450614175926101009004169063e985e9c59060a501610e34565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260088a901c602482018190529260ff8b16926141f0926001851b9261010090049091169063502e1a1690604401610ef0565b6141fa6001615576565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015614272575f80fd5b505af1158015614284573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f5a9165ff000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b15801561430a575f80fd5b505af115801561431c573d5f803e3d5ffd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633aea60f060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c60018c8e896040518763ffffffff1660e01b81526004016143a796959493929190615afa565b5f604051808303815f87803b1580156143be575f80fd5b505af11580156143d0573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561443b575f80fd5b505af115801561444d573d5f803e3d5ffd5b5050601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528e821660248201526144bc945061010090920416915063e985e9c590604401610e34565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101859052612cd2926001851b92610100909104169063502e1a1690604401610ef0565b60606015805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a23575050505050905090565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015614612575f80fd5b505af1158015614624573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015614695573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146b99190615bb5565b60225490915042905f906146e59073ffffffffffffffffffffffffffffffffffffffff16848685615092565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015614760573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147849190615ac1565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290526022547fca669fa700000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff1660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015614876575f80fd5b505af1158015614888573d5f803e3d5ffd5b5050601f546022546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff9081169450630f5730f193506148f4929116908b908b908e908890600401615c02565b5f604051808303815f87803b15801561490b575f80fd5b505af115801561491d573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018b90526149d8935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401602060405180830381865afa158015614996573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149ba9190615be7565b60225473ffffffffffffffffffffffffffffffffffffffff16615265565b601f546020546022546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152614a479261010090049091169063e985e9c590604401610e34565b602254614a6d9073ffffffffffffffffffffffffffffffffffffffff1660018a89614f28565b6021546040517fe341eaa4000000000000000000000000000000000000000000000000000000008152919650737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e341eaa491614acc918990600401918252602082015260400190565b606060405180830381865afa158015614ae7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b0b9190615ac1565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b1660608201529296509094509250606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290526022547f06447d5600000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff1660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015614bfb575f80fd5b505af1158015614c0d573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1fb09b80000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b158015614c93575f80fd5b505af1158015614ca5573d5f803e3d5ffd5b5050601f546020546022546040517f3aea60f000000000000000000000000000000000000000000000000000000000815261010090930473ffffffffffffffffffffffffffffffffffffffff9081169550633aea60f09450614d1993928116929116906001908c908f908990600401615afa565b5f604051808303815f87803b158015614d30575f80fd5b505af1158015614d42573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015614dad575f80fd5b505af1158015614dbf573d5f803e3d5ffd5b505050505050505050505050565b5f8082604051602001614de09190615c4d565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015614e7d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061