UNPKG

@excubiae/contracts

Version:
1 lines 200 kB
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deployer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"evidence","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"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":"guarded","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"notOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"subject","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"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_factory_deployAndInitialize","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_policy_enforce_whenCallerNotTarget_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenCheckFails_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenTokenDoesNotExist_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenValid_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_getAppendedBytes","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_policy_setTarget_whenAlreadySet_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_setTarget_whenCallerNotOwner_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_setTarget_whenValidAddress_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_setTarget_whenZeroAddress_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_target_returnsExpectedAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_trait_returnsCorrectValue","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_policy_whenAlreadyInitialized_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Enforced","inputs":[{"name":"subject","type":"address","indexed":true,"internalType":"address"},{"name":"guarded","type":"address","indexed":true,"internalType":"address"},{"name":"evidence","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"TargetSet","inputs":[{"name":"guarded","type":"address","indexed":true,"internalType":"address"}],"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":"0x60806040819052600c8054600160ff199182168117909255601f8054909116821790556001625e79b760e01b0319909152608452737109709ecfa91a80626ff3989d68f67f5b1dd12d63ffa1864960a4602060405180830381865afa15801561006a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061008e91906102a4565b602480546001600160a01b0319166001600160a01b03929092169190911781556040516001625e79b760e01b0319815260026004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ffa186499101602060405180830381865afa1580156100fd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012191906102a4565b602580546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b0319815260036004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610192573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b691906102a4565b602680546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b03198152600480820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610226573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024a91906102a4565b602780546001600160a01b0319166001600160a01b0392909216919091179055604080515f602082015201604051602081830303815290604052602890816102929190610369565b5034801561029e575f5ffd5b50610423565b5f602082840312156102b4575f5ffd5b81516001600160a01b03811681146102ca575f5ffd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806102f957607f821691505b60208210810361031757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561036457805f5260205f20601f840160051c810160208510156103425750805b601f840160051c820191505b81811015610361575f815560010161034e565b50505b505050565b81516001600160401b03811115610382576103826102d1565b6103968161039084546102e5565b8461031d565b6020601f8211600181146103c8575f83156103b15750848201515b5f19600385901b1c1916600184901b178455610361565b5f84815260208120601f198516915b828110156103f757878501518255602094850194600190920191016103d7565b508482101561041457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b616753806104305f395ff3fe608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c806389d8bda911610109578063c7e76f911161009e578063e20c9f711161006e578063e20c9f71146103a2578063e5f05d70146103aa578063eb5579d6146103b2578063fa7626d4146103ba575f5ffd5b8063c7e76f911461036a578063d25a8bd714610372578063d5f394881461037a578063db5b7a511461039a575f5ffd5b8063b0464fdc116100d9578063b0464fdc1461033a578063b5508aa914610342578063ba414fa61461034a578063bb23536814610362575f5ffd5b806389d8bda914610300578063916a17c61461030857806399ccfc421461031d578063a77e098714610325575f5ffd5b80634e693a631161017f5780637468b87f1161014f5780637468b87f146102d357806376548b75146102db57806385226c81146102e35780638956ab22146102f8575f5ffd5b80634e693a631461028e57806366d9a9a01461029657806372f7a030146102ab57806374374578146102cb575f5ffd5b8063251c9d63116101ba578063251c9d63146102495780632ade3880146102695780633e5e3c231461027e5780633f7286f414610286575f5ffd5b80630a59a98c146101e05780630a9254e41461022a5780631ed7831c14610234575b5f5ffd5b6026546102009073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102326103c7565b005b61023c610a6e565b604051610221919061311a565b6027546102009073ffffffffffffffffffffffffffffffffffffffff1681565b610271610adb565b60405161022191906131be565b61023c610c24565b61023c610c8f565b610232610cfa565b61029e610f58565b604051610221919061332c565b6025546102009073ffffffffffffffffffffffffffffffffffffffff1681565b6102326110d1565b610232611420565b61023261180f565b6102eb611a38565b60405161022191906133c8565b610232611b03565b610232611ed9565b610310611fc9565b604051610221919061343d565b6102326120cc565b61032d612289565b60405161022191906134df565b610310612315565b6102eb612418565b6103526124e3565b6040519015158152602001610221565b6102326125b3565b61023261288a565b610232612a71565b6024546102009073ffffffffffffffffffffffffffffffffffffffff1681565b610232612b6a565b61023c612d1f565b610232612d8a565b610232612ec1565b601f546103529060ff1681565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b158015610442575f5ffd5b505af1158015610454573d5f5f3e3d5ffd5b50505050604051610464906130f3565b604051809103905ff08015801561047d573d5f5f3e3d5ffd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516104ca90613100565b604051809103905ff0801580156104e3573d5f5f3e3d5ffd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040516105359061310d565b604051809103905ff08015801561054e573d5f5f3e3d5ffd5b5060235f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166341af2f526040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156105f5575f5ffd5b505af1158015610607573d5f5f3e3d5ffd5b5050602154601f546040517f4c96a38900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6101009092048216600482015291169250634c96a38991506024015f604051808303815f87803b15801561067c575f5ffd5b505af115801561068e573d5f5f3e3d5ffd5b505050505f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663191553a46040518163ffffffff1660e01b81526004015f604051808303815f875af11580156106fe573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610743919081019061367d565b90505f815f8151811061075857610758613821565b60200260200101515f015160018151811061077557610775613821565b60209081029190910181015181547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff821617909155604080517f41af2f520000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916341af2f52916004808201925f9290919082900301818387803b158015610827575f5ffd5b505af1158015610839573d5f5f3e3d5ffd5b50506023546020546040517f4c96a38900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169250634c96a38991506024015f604051808303815f87803b1580156108a9575f5ffd5b505af11580156108bb573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663191553a46040518163ffffffff1660e01b81526004015f604051808303815f875af115801561092a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261096f919081019061367d565b91505f825f8151811061098457610984613821565b60200260200101515f01516001815181106109a1576109a1613821565b6020908102919091010151602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055604080517f90c5013b0000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916390c5013b916004808201925f9290919082900301818387803b158015610a53575f5ffd5b505af1158015610a65573d5f5f3e3d5ffd5b50505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610ad157602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa6575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610c1b575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610c04578382905f5260205f20018054610b799061384e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba59061384e565b8015610bf05780601f10610bc757610100808354040283529160200191610bf0565b820191905f5260205f20905b815481529060010190602001808311610bd357829003601f168201915b505050505081526020019060010190610b5c565b505050508152505081526020019060010190610afe565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610ad157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa6575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610ad157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa6575050505050905090565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b158015610d75575f5ffd5b505af1158015610d87573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd92e233d0000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb39350610e2d92016134df565b5f604051808303815f87803b158015610e44575f5ffd5b505af1158015610e56573d5f5f3e3d5ffd5b50506022546040517f776d1a010000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff909116925063776d1a0191506024015b5f604051808303815f87803b158015610ec3575f5ffd5b505af1158015610ed5573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610f40575f5ffd5b505af1158015610f52573d5f5f3e3d5ffd5b50505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610c1b578382905f5260205f2090600202016040518060400160405290815f82018054610fab9061384e565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd79061384e565b80156110225780601f10610ff957610100808354040283529160200191611022565b820191905f5260205f20905b81548152906001019060200180831161100557829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156110b957602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116110665790505b50505050508152505081526020019060010190610f7b565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b15801561114c575f5ffd5b505af115801561115e573d5f5f3e3d5ffd5b50506022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b1580156111ce575f5ffd5b505af11580156111e0573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561124b575f5ffd5b505af115801561125d573d5f5f3e3d5ffd5b50506026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156112dd575f5ffd5b505af11580156112ef573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7d24b6fc0000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb3935061139592016134df565b5f604051808303815f87803b1580156113ac575f5ffd5b505af11580156113be573d5f5f3e3d5ffd5b50506022546026546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450631e898ef19350610eac9290911690602890600401613974565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b15801561149b575f5ffd5b505af11580156114ad573d5f5f3e3d5ffd5b50506022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b15801561151d575f5ffd5b505af115801561152f573d5f5f3e3d5ffd5b5050601f546026546040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152610100909204169250636a62784291506024015f604051808303815f87803b1580156115a4575f5ffd5b505af11580156115b6573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611621575f5ffd5b505af1158015611633573d5f5f3e3d5ffd5b50506025546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156116b3575f5ffd5b505af11580156116c5573d5f5f3e3d5ffd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c291506084015f604051808303815f87803b158015611741575f5ffd5b505af1158015611753573d5f5f3e3d5ffd5b505060255460265460405173ffffffffffffffffffffffffffffffffffffffff9283169450911691507fc013b39287cb7a53f776482ac9573829321f002f31ef8782129b41d60047bda0906117aa906028906139aa565b60405180910390a36022546026546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831692631e898ef192610eac92911690602890600401613974565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b15801561188a575f5ffd5b505af115801561189c573d5f5f3e3d5ffd5b50506022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b15801561190c575f5ffd5b505af115801561191e573d5f5f3e3d5ffd5b505050506119d160225f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372f7a0306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b391906139bc565b60255473ffffffffffffffffffffffffffffffffffffffff16612f5b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610f40575f5ffd5b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610c1b578382905f5260205f20018054611a789061384e565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa49061384e565b8015611aef5780601f10611ac657610100808354040283529160200191611aef565b820191905f5260205f20905b815481529060010190602001808311611ad257829003601f168201915b505050505081526020019060010190611a5b565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b158015611b7e575f5ffd5b505af1158015611b90573d5f5f3e3d5ffd5b50506022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b158015611c00575f5ffd5b505af1158015611c12573d5f5f3e3d5ffd5b5050601f546026546040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152610100909204169250636a62784291506024015f604051808303815f87803b158015611c87575f5ffd5b505af1158015611c99573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611d04575f5ffd5b505af1158015611d16573d5f5f3e3d5ffd5b50506025546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b158015611d96575f5ffd5b505af1158015611da8573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f471549450000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb39350611e4e92016134df565b5f604051808303815f87803b158015611e65575f5ffd5b505af1158015611e77573d5f5f3e3d5ffd5b50506022546027546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450631e898ef19350610eac9290911690602890600401613974565b602254604080517fce343deb0000000000000000000000000000000000000000000000000000000081529051611fc79273ffffffffffffffffffffffffffffffffffffffff169163ce343deb916004808301925f9291908290030181865afa158015611f47573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f8c91908101906139d5565b6040518060400160405280600a81526020017f4261736545524337323100000000000000000000000000000000000000000000815250612ff5565b565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610c1b575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156120b457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120615790505b50505050508152505081526020019060010190611fec565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b158015612147575f5ffd5b505af1158015612159573d5f5f3e3d5ffd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c291506084015f604051808303815f87803b1580156121d5575f5ffd5b505af11580156121e7573d5f5f3e3d5ffd5b505060255460405173ffffffffffffffffffffffffffffffffffffffff90911692507f3bfb4bbf112628248058745a3c57e35b13369386e474b8e56c552f3063a4a19691505f90a26022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169063776d1a0190602401610eac565b602880546122969061384e565b80601f01602080910402602001604051908101604052809291908181526020018280546122c29061384e565b801561230d5780601f106122e45761010080835404028352916020019161230d565b820191905f5260205f20905b8154815290600101906020018083116122f057829003601f168201915b505050505081565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610c1b575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561240057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123ad5790505b50505050508152505081526020019060010190612338565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610c1b578382905f5260205f200180546124589061384e565b80601f01602080910402602001604051908101604052809291908181526020018280546124849061384e565b80156124cf5780601f106124a6576101008083540402835291602001916124cf565b820191905f5260205f20905b8154815290600101906020018083116124b257829003601f168201915b50505050508152602001906001019061243b565b6008545f9060ff16156124fa575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015612588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ac9190613a1a565b1415905090565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b15801561262e575f5ffd5b505af1158015612640573d5f5f3e3d5ffd5b50506022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b1580156126b0575f5ffd5b505af11580156126c2573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561272d575f5ffd5b505af115801561273f573d5f5f3e3d5ffd5b50506025546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156127bf575f5ffd5b505af11580156127d1573d5f5f3e3d5ffd5b5050604080515f60248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7e2732890000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061139591906004016134df565b6027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612906575f5ffd5b505af1158015612918573d5f5f3e3d5ffd5b50506027546040805173ffffffffffffffffffffffffffffffffffffffff90921660248084019190915281518084039091018152604490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f118cdaa700000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506129ea91906004016134df565b5f604051808303815f87803b158015612a01575f5ffd5b505af1158015612a13573d5f5f3e3d5ffd5b50506022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a019150602401610eac565b602254604080517fb41a4b190000000000000000000000000000000000000000000000000000000081529051611fc79273ffffffffffffffffffffffffffffffffffffffff169163b41a4b19916004808301925f9291908290030181865afa158015612adf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612b249190810190613a31565b602454602080546040805173ffffffffffffffffffffffffffffffffffffffff948516938101939093529216818301528151808203830181526060909101909152613047565b602480546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d5691015f604051808303815f87803b158015612be5575f5ffd5b505af1158015612bf7573d5f5f3e3d5ffd5b50506022546025546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b158015612c67575f5ffd5b505af1158015612c79573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe0f2d7b10000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb393506129ea92016134df565b60606015805480602002602001604051908101604052809291908181526020018280548015610ad157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa6575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0dc149f00000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f28dceb392612e2e929091016134df565b5f604051808303815f87803b158015612e45575f5ffd5b505af1158015612e57573d5f5f3e3d5ffd5b5050505060225f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610f40575f5ffd5b602254604080517f158ef93e0000000000000000000000000000000000000000000000000000000081529051611fc79273ffffffffffffffffffffffffffffffffffffffff169163158ef93e9160048083019260209291908290030181865afa158015612f30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f549190613a63565b6001613099565b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b158015612fdb575f5ffd5b505afa158015612fed573d5f5f3e3d5ffd5b505050505050565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390612fc59085908590600401613a82565b6040517f97624631000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90639762463190612fc59085908590600401613a82565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe347790604401612fc5565b61175780613ab083390190565b6107bd8061520783390190565b610d5a806159c483390190565b602080825282518282018190525f918401906040840190835b8181101561316757835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101613133565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156132c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b818110156132aa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352613294848651613172565b602095860195909450929092019160010161325a565b5091975050506020948501949290920191506001016131e4565b50929695505050505050565b5f8151808452602084019350602083015f5b828110156133225781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016132e2565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156132c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526133966040880182613172565b90506020820151915086810360208801526133b181836132d0565b965050506020938401939190910190600101613352565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156132c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613428858351613172565b945060209384019391909101906001016133ee565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156132c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff815116865260208101519050604060208701526134c960408701826132d0565b9550506020938401939190910190600101613463565b602081525f6134f16020830184613172565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715613548576135486134f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613595576135956134f8565b604052919050565b5f67ffffffffffffffff8211156135b6576135b66134f8565b5060051b60200190565b5f5f67ffffffffffffffff8411156135da576135da6134f8565b50601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200161360d8161354e565b915050828152838383011115613621575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f830112613646575f5ffd5b6134f1838351602085016135c0565b805173ffffffffffffffffffffffffffffffffffffffff81168114613678575f5ffd5b919050565b5f6020828403121561368d575f5ffd5b815167ffffffffffffffff8111156136a3575f5ffd5b8201601f810184136136b3575f5ffd5b80516136c66136c18261359d565b61354e565b8082825260208201915060208360051b8501019250868311156136e7575f5ffd5b602084015b8381101561381657805167ffffffffffffffff81111561370a575f5ffd5b85016060818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561373d575f5ffd5b613745613525565b602082015167ffffffffffffffff81111561375e575f5ffd5b82016020810190603f018b13613772575f5ffd5b80516137806136c18261359d565b8082825260208201915060208360051b85010192508d8311156137a1575f5ffd5b6020840193505b828410156137c35783518252602093840193909101906137a8565b8452505050604082015167ffffffffffffffff8111156137e1575f5ffd5b6137f08b602083860101613637565b60208301525061380260608301613655565b6040820152845250602092830192016136ec565b509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600181811c9082168061386257607f821691505b602082108103613899577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b80545f90600181811c908216806138b757607f821691505b6020821081036138ee577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81865260208601818015613909576001811461393d57613969565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516825283151560051b82019550613969565b5f878152602090205f5b8581101561396357815484820152600190910190602001613947565b83019650505b505050505092915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6139a2604083018461389f565b949350505050565b602081525f6134f1602083018461389f565b5f602082840312156139cc575f5ffd5b6134f182613655565b5f602082840312156139e5575f5ffd5b815167ffffffffffffffff8111156139fb575f5ffd5b8201601f81018413613a0b575f5ffd5b6139a2848251602084016135c0565b5f60208284031215613a2a575f5ffd5b5051919050565b5f60208284031215613a41575f5ffd5b815167ffffffffffffffff811115613a57575f5ffd5b6139a284828501613637565b5f60208284031215613a73575f5ffd5b815180151581146134f1575f5ffd5b604081525f613a946040830185613172565b8281036020840152613aa68185613172565b9594505050505056fe608060405234801561000f575f5ffd5b5060408051808201825260038082526213919560ea1b6020808401829052845180860190955291845290830152905f61004883826100f5565b50600161005582826100f5565b5050506101af565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061008557607f821691505b6020821081036100a357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156100f057805f5260205f20601f840160051c810160208510156100ce5750805b601f840160051c820191505b818110156100ed575f81556001016100da565b50505b505050565b81516001600160401b0381111561010e5761010e61005d565b6101228161011c8454610071565b846100a9565b6020601f821160018114610154575f831561013d5750848201515b5f19600385901b1c1916600184901b1784556100ed565b5f84815260208120601f198516915b828110156101835787850151825560209485019460019092019101610163565b50848210156101a057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b61159b806101bc5f395ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80636a62784211610088578063a22cb46511610063578063a22cb465146101e8578063b88d4fde146101fb578063c87b56dd1461020e578063e985e9c514610221575f5ffd5b80636a627842146101ac57806370a08231146101bf57806395d89b41146101e0575f5ffd5b8063095ea7b3116100c3578063095ea7b31461015e57806323b872dd1461017357806342842e0e146101865780636352211e14610199575f5ffd5b806301ffc9a7146100e957806306fdde0314610111578063081812fc14610126575b5f5ffd5b6100fc6100f7366004611134565b610269565b60405190151581526020015b60405180910390f35b61011961034d565b604051610108919061119b565b6101396101343660046111ad565b6103dc565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b61017161016c3660046111ec565b610410565b005b610171610181366004611214565b61041f565b610171610194366004611214565b610513565b6101396101a73660046111ad565b610532565b6101716101ba36600461124e565b61053c565b6101d26101cd36600461124e565b61055f565b604051908152602001610108565b6101196105d7565b6101716101f6366004611267565b6105e6565b6101716102093660046112cd565b6105f1565b61011961021c3660046111ad565b610609565b6100fc61022f3660046113e7565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102fb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061034757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60605f805461035b90611418565b80601f016020809104026020016040519081016040528092919081815260200182805461038790611418565b80156103d25780601f106103a9576101008083540402835291602001916103d2565b820191905f5260205f20905b8154815290600101906020018083116103b557829003601f168201915b5050505050905090565b5f6103e68261067a565b505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff16610347565b61041b8282336106d8565b5050565b73ffffffffffffffffffffffffffffffffffffffff8216610473576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b5f61047f8383336106e5565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461050d576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8086166004830152602482018490528216604482015260640161046a565b50505050565b61052d83838360405180602001604052805f8152506105f1565b505050565b5f6103478261067a565b6105488160065461085c565b60068054905f61055783611469565b919050555050565b5f73ffffffffffffffffffffffffffffffffffffffff82166105af576040517f89c62b640000000000000000000000000000000000000000000000000000000081525f600482015260240161046a565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b60606001805461035b90611418565b61041b338383610875565b6105fc84848461041f565b61050d3385858585610971565b60606106148261067a565b505f61062a60408051602081019091525f815290565b90505f8151116106485760405180602001604052805f815250610673565b8061065284610b67565b6040516020016106639291906114dc565b6040516020818303038152906040525b9392505050565b5f8181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610347576040517f7e2732890000000000000000000000000000000000000000000000000000000081526004810184905260240161046a565b61052d8383836001610c23565b5f8281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff9081169083161561071e5761071e818486610deb565b73ffffffffffffffffffffffffffffffffffffffff811615610791576107465f855f5f610c23565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8516156107d95773ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260409020805460010190555b5f8481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b61041b828260405180602001604052805f815250610e9b565b73ffffffffffffffffffffffffffffffffffffffff82166108da576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260240161046a565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b15610b60576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906109e69088908890879087906004016114f0565b6020604051808303815f875af1925050508015610a3e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a3b9181019061154a565b60015b610acb573d808015610a6b576040519150601f19603f3d011682016040523d82523d5f602084013e610a70565b606091505b5080515f03610ac3576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161046a565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014610b5e576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161046a565b505b5050505050565b60605f610b7383610eb2565b60010190505f8167ffffffffffffffff811115610b9257610b926112a0565b6040519080825280601f01601f191660200182016040528015610bbc576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610bc657509392505050565b8080610c44575073ffffffffffffffffffffffffffffffffffffffff821615155b15610d97575f610c538461067a565b905073ffffffffffffffffffffffffffffffffffffffff831615801590610ca657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610ce4575073ffffffffffffffffffffffffffffffffffffffff8082165f9081526005602090815260408083209387168352929052205460ff16155b15610d33576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161046a565b8115610d9557838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610df6838383610f93565b61052d5773ffffffffffffffffffffffffffffffffffffffff8316610e4a576040517f7e2732890000000000000000000000000000000000000000000000000000000081526004810182905260240161046a565b6040517f177e802f0000000000000000000000000000000000000000000