@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 300 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_defaultSalt_deploy_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_deploy_reverts_CompetitionNotOver","inputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_deploy_reverts_InvalidBytecode","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_deploy_reverts_NotAllowedToDeploy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_deploy_succeeds","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_deploy_succeeds_afterExcusiveDeployDeadline","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateBestAddress_reverts_CompetitionOver","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateBestAddress_reverts_InvalidSigner","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateBestAddress_reverts_WorseAddress","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateBestAddress_succeeds","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"NewAddressFound","inputs":[{"name":"bestAddress","type":"address","indexed":true,"internalType":"address"},{"name":"submitter","type":"address","indexed":true,"internalType":"address"},{"name":"score","type":"uint256","indexed":false,"internalType":"uint256"}],"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":"0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620151806026556001600160601b03602755348015603d575f80fd5b5061c33f8061004b5f395ff3fe608060405234801561000f575f80fd5b5060043610610184575f3560e01c8063a60dfd5e116100dd578063d5e4356811610088578063e7f7cecd11610063578063e7f7cecd146102bb578063f6ccba37146102ce578063fa7626d4146102d6575f80fd5b8063d5e4356814610298578063d80890a3146102a0578063e20c9f71146102b3575f80fd5b8063ba414fa6116100b8578063ba414fa61461025a578063c4955eb614610272578063ce20c91d14610285575f80fd5b8063a60dfd5e14610237578063b0464fdc1461024a578063b5508aa914610252575f80fd5b80633f7286f41161013d57806385226c811161011857806385226c8114610205578063916a17c61461021a5780639eddbdd71461022f575f80fd5b80633f7286f4146101d557806366d9a9a0146101dd578063804604bc146101f2575f80fd5b80631ed7831c1161016d5780631ed7831c1461019a5780632ade3880146101b85780633e5e3c23146101cd575f80fd5b80630a9254e414610188578063165522f914610192575b5f80fd5b6101906102e3565b005b6101906106b6565b6101a261093d565b6040516101af91906145f8565b60405180910390f35b6101c06109aa565b6040516101af919061469c565b6101a2610af3565b6101a2610b5e565b6101e5610bc9565b6040516101af919061480a565b6101906102003660046148a6565b610d42565b61020d61117c565b6040516101af91906148bd565b610222611247565b6040516101af9190614932565b61019061134a565b6101906102453660046148a6565b611504565b610222611828565b61020d61192b565b6102626119f6565b60405190151581526020016101af565b6101906102803660046148a6565b611ac6565b6101906102933660046148a6565b6120ac565b610190612d0e565b6101906102ae3660046148a6565b6131af565b6101a261345e565b6101906102c93660046148a6565b6134c9565b610190613c80565b601f546102629060ff1681565b6102f04262093a80614a01565b60255560408051808201909152600781527f56344f776e657200000000000000000000000000000000000000000000000000602082015261033090613ef1565b602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600681527f57696e6e6572000000000000000000000000000000000000000000000000000060208201526103b290613ef1565b602380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600881527f4465706c6f796572000000000000000000000000000000000000000000000000602082015261043490613ef1565b602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040517fca669fa70000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156104dc575f80fd5b505af11580156104ee573d5f803e3d5ffd5b5050505060405180602001610502906145de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905260225461055e929173ffffffffffffffffffffffffffffffffffffffff90911690602001614a2b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290528051602091820120908190556025546021546026549293919273ffffffffffffffffffffffffffffffffffffffff909116916105c8906145eb565b938452602084019290925273ffffffffffffffffffffffffffffffffffffffff1660408301526060820152608001604051809103905ff08015801561060f573d5f803e3d5ffd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905560205461066f935f93919290910416613f02565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663e5d6bf02601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166360f871bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107839190614a43565b61078e906001614a01565b6040518263ffffffff1660e01b81526004016107ac91815260200190565b5f604051808303815f87803b1580156107c3575f80fd5b505af11580156107d5573d5f803e3d5ffd5b50506040517fca669fa700000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b5f604051808303815f87803b15801561083d575f80fd5b505af115801561084f573d5f803e3d5ffd5b5050601f5460405161010090910473ffffffffffffffffffffffffffffffffffffffff169250627743609150610887602082016145de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526022546108e3929173ffffffffffffffffffffffffffffffffffffffff90911690602001614a2b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161090e9190614a5a565b5f604051808303815f87803b158015610925575f80fd5b505af1158015610937573d5f803e3d5ffd5b50505050565b606060168054806020026020016040519081016040528092919081815260200182805480156109a057602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610975575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610aea575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610ad3578382905f5260205f20018054610a4890614a6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7490614a6c565b8015610abf5780601f10610a9657610100808354040283529160200191610abf565b820191905f5260205f20905b815481529060010190602001808311610aa257829003601f168201915b505050505081526020019060010190610a2b565b5050505081525050815260200190600101906109cd565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156109a057602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610975575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156109a057602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610975575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610aea578382905f5260205f2090600202016040518060400160405290815f82018054610c1c90614a6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890614a6c565b8015610c935780601f10610c6a57610100808354040283529160200191610c93565b820191905f5260205f20905b815481529060010190602001808311610c7657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d2a57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610cd75790505b50505050508152505081526020019060010190610bec565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16634c63e562601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a94557b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610deb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0f9190614a43565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815290841060048201526024015f6040518083038186803b158015610e5c575f80fd5b505afa158015610e6e573d5f803e3d5ffd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf0291506024015f604051808303815f87803b158015610ed5575f80fd5b505af1158015610ee7573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663f28dceb3630474c5c160e01b83601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a94557b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc19190614a43565b60405160248101929092526044820152606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825261106491600401614a5a565b5f604051808303815f87803b15801561107b575f80fd5b505af115801561108d573d5f803e3d5ffd5b5050601f5460405161010090910473ffffffffffffffffffffffffffffffffffffffff1692506277436091506110c5602082016145de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052602254611121929173ffffffffffffffffffffffffffffffffffffffff90911690602001614a2b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161114c9190614a5a565b5f604051808303815f87803b158015611163575f80fd5b505af1158015611175573d5f803e3d5ffd5b5050505050565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610aea578382905f5260205f200180546111bc90614a6c565b80601f01602080910402602001604051908101604052809291908181526020018280546111e890614a6c565b80156112335780601f1061120a57610100808354040283529160200191611233565b820191905f5260205f20905b81548152906001019060200180831161121657829003601f168201915b50505050508152602001906001019061119f565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610aea575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561133257602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116112df5790505b5050505050815250508152602001906001019061126a565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f23639643000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b1580156113cc575f80fd5b505af11580156113de573d5f803e3d5ffd5b50506021546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b15801561145e575f80fd5b505af1158015611470573d5f803e3d5ffd5b5050601f5460405161010090910473ffffffffffffffffffffffffffffffffffffffff1692506277436091506114a8602082016145de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526023546108e3929173ffffffffffffffffffffffffffffffffffffffff90911690602001614a2b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663e5d6bf02601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a94557b86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d19190614a43565b6115dc906001614a01565b6040518263ffffffff1660e01b81526004016115fa91815260200190565b5f604051808303815f87803b158015611611575f80fd5b505af1158015611623573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663f28dceb363afa178b060e01b42601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a94557b86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fd9190614a43565b60405160248101929092526044820152606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526117a091600401614a5a565b5f604051808303815f87803b1580156117b7575f80fd5b505af11580156117c9573d5f803e3d5ffd5b5050601f546040517ffd3989f50000000000000000000000000000000000000000000000000000000081526004810185905261010090910473ffffffffffffffffffffffffffffffffffffffff16925063fd3989f5915060240161114c565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610aea575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561191357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116118c05790505b5050505050815250508152602001906001019061184b565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610aea578382905f5260205f2001805461196b90614a6c565b80601f016020809104026020016040519081016040528092919081815260200182805461199790614a6c565b80156119e25780601f106119b9576101008083540402835291602001916119e2565b820191905f5260205f20905b8154815290600101906020018083116119c557829003601f168201915b50505050508152602001906001019061194e565b6008545f9060ff1615611a0d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015611a9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611abf9190614a43565b1415905090565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b6bffffffffffffffffffffffff191660275482161790505f611b3282602054601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f02565b602454909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e56290611b779073ffffffffffffffffffffffffffffffffffffffff8086169116613f2b565b6040518263ffffffff1660e01b8152600401611b97911515815260200190565b5f6040518083038186803b158015611bad575f80fd5b505afa158015611bbf573d5f803e3d5ffd5b50506023546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015611c3f575f80fd5b505af1158015611c51573d5f803e3d5ffd5b5050601f546040517ffd3989f50000000000000000000000000000000000000000000000000000000081526004810186905261010090910473ffffffffffffffffffffffffffffffffffffffff16925063fd3989f591506024015f604051808303815f87803b158015611cc2575f80fd5b505af1158015611cd4573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d689190614abd565b601f54604080517fa94557b80000000000000000000000000000000000000000000000000000000081529051929350737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e5d6bf0292610100900473ffffffffffffffffffffffffffffffffffffffff169163a94557b89160048083019260209291908290030181865afa158015611df7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1b9190614a43565b611e26906001614a01565b6040518263ffffffff1660e01b8152600401611e4491815260200190565b5f604051808303815f87803b158015611e5b575f80fd5b505af1158015611e6d573d5f803e3d5ffd5b50506021546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015611eed575f80fd5b505af1158015611eff573d5f803e3d5ffd5b5050601f5460405161010090910473ffffffffffffffffffffffffffffffffffffffff169250627743609150611f37602082016145de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052602254611f93929173ffffffffffffffffffffffffffffffffffffffff90911690602001614a2b565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611fbe9190614a5a565b5f604051808303815f87803b158015611fd5575f80fd5b505af1158015611fe7573d5f803e3d5ffd5b5050505061200d8173ffffffffffffffffffffffffffffffffffffffff163b5f14613f48565b61209b8173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612059573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207d9190614abd565b60225473ffffffffffffffffffffffffffffffffffffffff16613fbd565b6120a7617fff8061404f565b505050565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b6bffffffffffffffffffffffff19166027548216179050612180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e87a6f846040518163ffffffff1660e01b8152600401602060405180830381865afa158015612156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061217a9190614abd565b5f613fbd565b612218601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663edb6e1ca6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122129190614a43565b5f6140a7565b6122c8601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa158015612286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122aa9190614abd565b60245473ffffffffffffffffffffffffffffffffffffffff16613fbd565b5f6122f882602054601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f02565b602454909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629061233d9073ffffffffffffffffffffffffffffffffffffffff8086169116613f2b565b6040518263ffffffff1660e01b815260040161235d911515815260200190565b5f6040518083038186803b158015612373575f80fd5b505afa158015612385573d5f803e3d5ffd5b50506023546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015612405575f80fd5b505af1158015612417573d5f803e3d5ffd5b5050601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201525f606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a4015f604051808303815f87803b1580156124b6575f80fd5b505af11580156124c8573d5f803e3d5ffd5b505060235473ffffffffffffffffffffffffffffffffffffffff9081169250831690507f7e8d398a63ed37daa88e8998642ec9be730043b51e67affe790111f209e4046b612515846140ff565b60405190815260200160405180910390a3601f546040517ffd3989f50000000000000000000000000000000000000000000000000000000081526004810184905261010090910473ffffffffffffffffffffffffffffffffffffffff169063fd3989f5906024015f604051808303815f87803b158015612593575f80fd5b505af11580156125a5573d5f803e3d5ffd5b505050506126a45f73ffffffffffffffffffffffffffffffffffffffff16601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa15801561262e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126529190614abd565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601481526020017f626573742061646472657373206e6f7420736574000000000000000000000000815250614246565b612772601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa158015612712573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127369190614abd565b826040518060400160405280601181526020017f77726f6e67206164647265737320736574000000000000000000000000000000815250614298565b612859601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e87a6f846040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128049190614abd565b60235460408051808201909152601381527f77726f6e67207375626d69747465722073657400000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90911690614298565b612927601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663edb6e1ca6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128eb9190614a43565b836040518060400160405280601281526020017f696e636f72726563742073616c7420736574000000000000000000000000000081525061431d565b5f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa158015612993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b79190614abd565b90506129da8173ffffffffffffffffffffffffffffffffffffffff163b5f614371565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663e5d6bf02601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a94557b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aa79190614a43565b612ab2906001614a01565b6040518263ffffffff1660e01b8152600401612ad091815260200190565b5f604051808303815f87803b158015612ae7575f80fd5b505af1158015612af9573d5f803e3d5ffd5b50506021546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015612b79575f80fd5b505af1158015612b8b573d5f803e3d5ffd5b5050601f5460405161010090910473ffffffffffffffffffffffffffffffffffffffff169250627743609150612bc3602082016145de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052602254612c1f929173ffffffffffffffffffffffffffffffffffffffff90911690602001614a2b565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612c4a9190614a5a565b5f604051808303815f87803b158015612c61575f80fd5b505af1158015612c73573d5f803e3d5ffd5b50505050612c998173ffffffffffffffffffffffffffffffffffffffff163b5f14613f48565b612ce58173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612059573d5f803e3d5ffd5b601f546120a790610100900473ffffffffffffffffffffffffffffffffffffffff16315f614371565b612d7c601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e87a6f846040518163ffffffff1660e01b8152600401602060405180830381865afa158015612156573d5f803e3d5ffd5b612dea601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663edb6e1ca6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ee573d5f803e3d5ffd5b612e58601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa158015612286573d5f803e3d5ffd5b602454612e7c9073ffffffffffffffffffffffffffffffffffffffff163b5f614371565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663e5d6bf02601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a94557b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f499190614a43565b612f54906001614a01565b6040518263ffffffff1660e01b8152600401612f7291815260200190565b5f604051808303815f87803b158015612f89575f80fd5b505af1158015612f9b573d5f803e3d5ffd5b50506021546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b15801561301b575f80fd5b505af115801561302d573d5f803e3d5ffd5b5050601f5460405161010090910473ffffffffffffffffffffffffffffffffffffffff169250627743609150613065602082016145de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526022546130c1929173ffffffffffffffffffffffffffffffffffffffff90911690602001614a2b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016130ec9190614a5a565b5f604051808303815f87803b158015613103575f80fd5b505af1158015613115573d5f803e3d5ffd5b505060245461313e925073ffffffffffffffffffffffffffffffffffffffff163b159050613f48565b602454604080517f8da5cb5b00000000000000000000000000000000000000000000000000000000815290516131ad9273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b9160048083019260209291908290030181865afa158015612059573d5f803e3d5ffd5b565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000821615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e562906024015f6040518083038186803b158015613234575f80fd5b505afa158015613246573d5f803e3d5ffd5b50506023546040517f4c63e56200000000000000000000000000000000000000000000000000000000815260609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090811690851614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291506024015f6040518083038186803b1580156132dc575f80fd5b505afa1580156132ee573d5f803e3d5ffd5b5050602354604080516024810186905273ffffffffffffffffffffffffffffffffffffffff90921660448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8c7d994900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506133c79190600401614a5a565b5f604051808303815f87803b1580156133de575f80fd5b505af11580156133f0573d5f803e3d5ffd5b50506023546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016117a0565b606060158054806020026020016040519081016040528092919081815260200182805480156109a057602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610975575050505050905090565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e562906024015f6040518083038186803b15801561352c575f80fd5b505afa15801561353e573d5f803e3d5ffd5b5050505060235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b6bffffffffffffffffffffffff191660275482161790505f6135ae82602054601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f02565b6024549091506135d79073ffffffffffffffffffffffffffffffffffffffff8084169116613f2b565b61398757601f54604080517f756f06830000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f28dceb3927f29551db800000000000000000000000000000000000000000000000000000000928692610100900473ffffffffffffffffffffffffffffffffffffffff169163756f06839160048083019260209291908290030181865afa15801561368b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136af9190614abd565b6136ce8673ffffffffffffffffffffffffffffffffffffffff166140ff565b61377b601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa15801561373c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137609190614abd565b73ffffffffffffffffffffffffffffffffffffffff166140ff565b60405173ffffffffffffffffffffffffffffffffffffffff94851660248201529390921660448401526064830152608482015260a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825261384191600401614a5a565b5f604051808303815f87803b158015613858575f80fd5b505af115801561386a573d5f803e3d5ffd5b50506023546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b1580156138ea575f80fd5b505af11580156138fc573d5f803e3d5ffd5b5050601f546040517ffd3989f50000000000000000000000000000000000000000000000000000000081526004810186905261010090910473ffffffffffffffffffffffffffffffffffffffff16925063fd3989f591506024015f604051808303815f87803b15801561396d575f80fd5b505af115801561397f573d5f803e3d5ffd5b505050505050565b6023546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613a03575f80fd5b505af1158015613a15573d5f803e3d5ffd5b5050601f546040517ffd3989f50000000000000000000000000000000000000000000000000000000081526004810186905261010090910473ffffffffffffffffffffffffffffffffffffffff16925063fd3989f591506024015f604051808303815f87803b158015613a86575f80fd5b505af1158015613a98573d5f803e3d5ffd5b50505050613b4c601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e87a6f846040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b2e9190614abd565b60235473ffffffffffffffffffffffffffffffffffffffff16613fbd565b613be4601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663edb6e1ca6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bde9190614a43565b836140a7565b613c7c601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663756f06836040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c769190614abd565b82613fbd565b5050565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663e5d6bf02601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a94557b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d4d9190614a43565b613d58906001614a01565b6040518263ffffffff1660e01b8152600401613d7691815260200190565b5f604051808303815f87803b158015613d8d575f80fd5b505af1158015613d9f573d5f803e3d5ffd5b50506040517fca669fa700000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015613e06575f80fd5b505af1158015613e18573d5f803e3d5ffd5b5050602154604080516001602482015273ffffffffffffffffffffffffffffffffffffffff90921660448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc419b2d200000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506108269190600401614a5a565b5f613efb826143c9565b5092915050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b5f613f35826140ff565b613f3e846140ff565b1190505b92915050565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015f6040518083038186803b158015613fab575f80fd5b505afa158015611175573d5f803e3d5ffd5b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b15801561403d575f80fd5b505afa15801561397f573d5f803e3d5ffd5b6040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063fe74f05b90604401614027565b6040517f7c84c69b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d90637c84c69b90604401614027565b5f606082901b81614111828280614524565b905080600a02830192505f61412883836004614524565b9050805f0361413b57505f949350505050565b8060040361414e57603c8401935061415e565b600481111561415e576028840193505b5f5b6028811015614191575f6141748583614593565b90508060ff16600403614188576001860195505b50600101614160565b507f44000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000601285901a60f81b1614801561423257507f44000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000601385901a60f81b16145b1561423e576014840193505b505050919050565b6040517f7ba04809000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90637ba04809906140279085908590600401614b1d565b6040517f2f2769d1000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906142ec90869086908690600401614b3f565b5f6040518083038186803b158015614302575f80fd5b505afa158015614314573d5f803e3d5ffd5b50505050505050565b6040517fc1fa1ed0000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed0906142ec90869086908690600401614b92565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401614027565b5f80826040516020016143dc9190614bb0565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015614479573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061449d9190614abd565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906144f29085908790600401614bbb565b5f604051808303815f87803b158015614509575f80fd5b505af115801561451b573d5f803e3d5ffd5b50505050915091565b5f61453160146002614be9565b60ff1683101561458c57825b61454960146002614be9565b60ff1681101561458a575f61455e8683614593565b90508360ff168160ff161461457457505061458c565b61457f600184614a01565b92505060010161453d565b505b9392505050565b5f80836145a1600285614c32565b601481106145b1576145b1614af0565b1a90506145bf600284614c45565b5f036145d45760048160ff16901c9150613efb565b600f169392505050565b616a0580614c5983390190565b610cd58061b65e83390190565b602080825282518282018190525f918401906040840190835b8181101561464557835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101614611565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156147a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015614788577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352614772848651614650565b6020958601959094509290920191600101614738565b5091975050506020948501949290920191506001016146c2565b50929695505050505050565b5f8151808452602084019350602083015f5b828110156148005781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016147c0565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156147a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526148746040880182614650565b905060208201519150868103602088015261488f81836147ae565b965050506020938401939190910190600101614830565b5f602082840312156148b6575f80fd5b5035919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156147a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261491d858351614650565b945060209384019391909101906001016148e3565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156147a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff815116865260208101519050604060208701526149be60408701826147ae565b9550506020938401939190910190600101614958565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115613f4257613f426149d4565b5f81518060208401855e5f93019283525090919050565b5f614a368285614a14565b9283525050602001919050565b5f60208284031215614a53575f80fd5b5051919050565b602081525f61458c6020830184614650565b600181811c90821680614a8057607f821691505b602082108103614ab7577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215614acd575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461458c575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8215158152604060208201525f614b376040830184614650565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f614b896060830184614650565b95945050505050565b838152826020820152606060408201525f614b896060830184614650565b5f61458c8284614a14565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f614b376040830184614650565b60ff8181168382160290811690818114613efb57613efb6149d4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82614c4057614c40614c05565b500490565b5f82614c5357614c53614c05565b50069056fe60a0604052348015600e575f80fd5b50604051616a05380380616a05833981016040819052602b91607f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050306080525060aa565b5f60208284031215608e575f80fd5b81516001600160a01b038116811460a3575f80fd5b9392505050565b6080516169436100c25f395f61205f01526169435ff3fe6080604052600436106101f4575f3560e01c80635a6bcfda11610117578063a5841194116100ac578063f135baaa1161007c578063f3cd914c11610062578063f3cd914c14610676578063f5298aca14610695578063fe99049a146106b4575f80fd5b8063f135baaa14610638578063f2fde38b14610657575f80fd5b8063a584119414610595578063b6363cf2146105b4578063dbd035ff146105ed578063f02de3b21461060c575f80fd5b80638161b874116100e75780638161b874146104dc5780638da5cb5b146104fb57806397e8cd4e1461054b5780639bf6645f14610576575f80fd5b80635a6bcfda146104385780636276cbbe1461046c5780637e87ce7d1461049e57806380f0b44c146104bd575f80fd5b80632d7713891161018d57806348c894911161015d57806348c894911461039257806352759651146103be578063558a7297146103dd578063598af9e7146103fc575f80fd5b80632d7713891461031557806335fd631a146103345780633dd45adb14610360578063426a849314610373575f80fd5b806311da60b4116101c857806311da60b4146102b0578063156e29f6146102b85780631e2eaeaf146102d7578063234266d7146102f6575f80fd5b8062fdd58e146101f857806301ffc9a714610241578063095bcdb6146102705780630b0d9c091461028f575b5f80fd5b348015610203575f80fd5b5061022e610212366004615908565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b366004615932565b6106d3565b6040519015158152602001610238565b34801561027b575f80fd5b5061026061028a366004615971565b61076b565b34801561029a575f80fd5b506102ae6102a93660046159a3565b61083f565b005b61022e6108c9565b3480156102c3575f80fd5b506102ae6102d2366004615971565b610927565b3480156102e2575f80fd5b5061022e6102f13660046159e1565b6109ab565b348015610301575f80fd5b5061022e610310366004615b9b565b6109b5565b348015610320575f80fd5b506102ae61032f366004615c00565b610ad9565b34801561033f575f80fd5b5061035361034e366004615c1b565b610bcc565b604051610