@latticexyz/world-module-erc20 2.2.15-entrykit-d928bffbd5581fdc643915df1e5faad2eaafa210 → 2.2.15-ff8a065dc8e5216ad23e68f6a6c4856ecb2208a3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -8
- package/out/AccessControl.sol/AccessControl.json +1 -1
- package/out/AccessManagementSystem.sol/AccessManagementSystem.json +1 -1
- package/out/Allowances.sol/Allowances.json +1 -1
- package/out/BalanceTransferSystem.sol/BalanceTransferSystem.json +1 -1
- package/out/Balances.sol/Balances.json +1 -1
- package/out/Base.sol/CommonBase.json +1 -1
- package/out/Base.sol/ScriptBase.json +1 -1
- package/out/Base.sol/TestBase.json +1 -1
- package/out/BatchCallSystem.sol/BatchCallSystem.json +1 -1
- package/out/Bytes.sol/Bytes.json +1 -1
- package/out/Constants.sol/ERC20TableNames.json +1 -1
- package/out/Constants.sol/ModuleConstants.json +1 -1
- package/out/Constants.sol/OwnableTableNames.json +1 -1
- package/out/Constants.sol/PausableTableNames.json +1 -1
- package/out/Context.sol/Context.json +1 -1
- package/out/DecodeSlice.sol/DecodeSlice.json +1 -1
- package/out/Delegation.sol/Delegation.json +1 -1
- package/out/ERC165Checker.sol/ERC165Checker.json +1 -1
- package/out/ERC20BaseTest.t.sol/ERC20BehaviorTest.json +1 -0
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreBehaviorTest.json +1 -0
- package/out/ERC20BaseTest.t.sol/ERC20WithInternalStoreTest.json +1 -0
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldBehaviorTest.json +1 -0
- package/out/ERC20BaseTest.t.sol/ERC20WithWorldTest.json +1 -0
- package/out/ERC20BaseTest.t.sol/MockERC20Base.json +1 -0
- package/out/ERC20BaseTest.t.sol/MockERC20WithInternalStore.json +1 -0
- package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/MockERC20WithWorld.abi.json +28 -0
- package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/MockERC20WithWorld.abi.json.d.ts +28 -0
- package/out/ERC20BaseTest.t.sol/MockERC20WithWorld.json +1 -0
- package/out/ERC20BaseTest.t.sol/TestConstants.json +1 -0
- package/out/ERC20Burnable.sol/ERC20Burnable.json +1 -1
- package/out/ERC20Burnable.t.sol/ERC20BurnableTest.json +1 -1
- package/out/ERC20Burnable.t.sol/ERC20BurnableWithInternalStoreTest.json +1 -1
- package/out/ERC20Burnable.t.sol/ERC20BurnableWithWorldTest.json +1 -1
- package/out/ERC20Burnable.t.sol/MockERC20WithInternalStoreBurnable.json +1 -1
- package/out/ERC20Burnable.t.sol/MockERC20WithWorldBurnable.abi.json +28 -0
- package/out/ERC20Burnable.t.sol/MockERC20WithWorldBurnable.abi.json.d.ts +28 -0
- package/out/ERC20Burnable.t.sol/MockERC20WithWorldBurnable.json +1 -1
- package/out/ERC20Metadata.sol/ERC20Metadata.json +1 -1
- package/out/ERC20Module.sol/ERC20Module.json +1 -1
- package/out/ERC20Module.sol/ERC20RegistryLib.json +1 -1
- package/out/ERC20Module.t.sol/ERC20ModuleTest.json +1 -1
- package/out/ERC20Module.t.sol/TestConstants.json +1 -1
- package/out/ERC20Pausable.sol/ERC20Pausable.json +1 -1
- package/out/ERC20Pausable.t.sol/ERC20PausableBehaviorTest.json +1 -1
- package/out/ERC20Pausable.t.sol/ERC20PausableWithInternalStoreTest.json +1 -1
- package/out/ERC20Pausable.t.sol/ERC20PausableWithWorldTest.json +1 -1
- package/out/ERC20Pausable.t.sol/MockERC20Pausable.json +1 -1
- package/out/ERC20Pausable.t.sol/MockERC20WithInternalStorePausable.json +1 -1
- package/out/ERC20Pausable.t.sol/MockERC20WithWorldPausable.abi.json +28 -0
- package/out/ERC20Pausable.t.sol/MockERC20WithWorldPausable.abi.json.d.ts +28 -0
- package/out/ERC20Pausable.t.sol/MockERC20WithWorldPausable.json +1 -1
- package/out/ERC20Registry.sol/ERC20Registry.json +1 -1
- package/out/ERC20WithInternalStore.sol/ERC20WithInternalStore.json +1 -1
- package/out/ERC20WithWorld.sol/ERC20WithWorld.abi.json +28 -0
- package/out/ERC20WithWorld.sol/ERC20WithWorld.abi.json.d.ts +28 -0
- package/out/ERC20WithWorld.sol/ERC20WithWorld.json +1 -1
- package/out/EncodeArray.sol/EncodeArray.json +1 -1
- package/out/EncodedLengths.sol/EncodedLengthsInstance.json +1 -1
- package/out/EncodedLengths.sol/EncodedLengthsLib.json +1 -1
- package/out/FieldLayout.sol/FieldLayoutInstance.json +1 -1
- package/out/FieldLayout.sol/FieldLayoutLib.json +1 -1
- package/out/FunctionSelectors.sol/FunctionSelectors.json +1 -1
- package/out/FunctionSignatures.sol/FunctionSignatures.json +1 -1
- package/out/GasReporter.sol/GasReporter.json +1 -1
- package/out/Hook.sol/HookInstance.json +1 -1
- package/out/Hook.sol/HookLib.json +1 -1
- package/out/Hooks.sol/Hooks.json +1 -1
- package/out/IAccessManagementSystem.sol/IAccessManagementSystem.json +1 -1
- package/out/IBalanceTransferSystem.sol/IBalanceTransferSystem.json +1 -1
- package/out/IBaseWorld.sol/IBaseWorld.json +1 -1
- package/out/IBatchCallSystem.sol/IBatchCallSystem.json +1 -1
- package/out/IDelegationControl.sol/IDelegationControl.json +1 -1
- package/out/IERC165.sol/IERC165.json +1 -1
- package/out/IERC20.sol/IERC20.json +1 -1
- package/out/IERC20Errors.sol/IERC20Errors.json +1 -1
- package/out/IERC20Events.sol/IERC20Events.json +1 -1
- package/out/IERC20Metadata.sol/IERC20Metadata.json +1 -1
- package/out/IEncodedLengthsErrors.sol/IEncodedLengthsErrors.json +1 -1
- package/out/IFieldLayoutErrors.sol/IFieldLayoutErrors.json +1 -1
- package/out/IModule.sol/IModule.json +1 -1
- package/out/IModuleErrors.sol/IModuleErrors.json +1 -1
- package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +1 -1
- package/out/IMulticall3.sol/IMulticall3.json +1 -1
- package/out/IRegistrationSystem.sol/IRegistrationSystem.json +1 -1
- package/out/ISchemaErrors.sol/ISchemaErrors.json +1 -1
- package/out/ISliceErrors.sol/ISliceErrors.json +1 -1
- package/out/IStore.sol/IStore.json +1 -1
- package/out/IStoreErrors.sol/IStoreErrors.json +1 -1
- package/out/IStoreEvents.sol/IStoreEvents.json +1 -1
- package/out/IStoreHook.sol/IStoreHook.json +1 -1
- package/out/IStoreKernel.sol/IStoreKernel.json +1 -1
- package/out/IStoreRead.sol/IStoreRead.json +1 -1
- package/out/IStoreRegistration.sol/IStoreRegistration.json +1 -1
- package/out/IStoreWrite.sol/IStoreWrite.json +1 -1
- package/out/ISystemHook.sol/ISystemHook.json +1 -1
- package/out/IWorldContextConsumer.sol/IWorldContextConsumer.json +1 -1
- package/out/IWorldErrors.sol/IWorldErrors.json +1 -1
- package/out/IWorldEvents.sol/IWorldEvents.json +1 -1
- package/out/IWorldKernel.sol/IWorldCall.json +1 -1
- package/out/IWorldKernel.sol/IWorldKernel.json +1 -1
- package/out/IWorldKernel.sol/IWorldModuleInstallation.json +1 -1
- package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +1 -1
- package/out/InitModule.sol/InitModule.json +1 -1
- package/out/InitModuleAddress.sol/InitModuleAddress.json +1 -1
- package/out/InstalledModules.sol/InstalledModules.json +1 -1
- package/out/LimitedCallContext.sol/LimitedCallContext.json +1 -1
- package/out/MUDERC20.sol/MUDERC20.json +1 -1
- package/out/Memory.sol/Memory.json +1 -1
- package/out/Module.sol/Module.json +1 -1
- package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +1 -1
- package/out/NamespaceDelegationControl.sol/NamespaceDelegationControl.json +1 -1
- package/out/NamespaceOwner.sol/NamespaceOwner.json +1 -1
- package/out/Ownable.sol/Ownable.json +1 -1
- package/out/Owner.sol/Owner.json +1 -1
- package/out/Pausable.sol/Pausable.json +1 -1
- package/out/Paused.sol/Paused.json +1 -1
- package/out/RegistrationSystem.sol/RegistrationSystem.json +1 -1
- package/out/ResourceAccess.sol/ResourceAccess.json +1 -1
- package/out/ResourceId.sol/ResourceIdInstance.json +1 -1
- package/out/ResourceId.sol/ResourceIdLib.json +1 -1
- package/out/ResourceIds.sol/ResourceIds.json +1 -1
- package/out/Schema.sol/SchemaInstance.json +1 -1
- package/out/Schema.sol/SchemaLib.json +1 -1
- package/out/Slice.sol/SliceInstance.json +1 -1
- package/out/Slice.sol/SliceLib.json +1 -1
- package/out/StdAssertions.sol/StdAssertions.json +1 -1
- package/out/StdChains.sol/StdChains.json +1 -1
- package/out/StdCheats.sol/StdCheats.json +1 -1
- package/out/StdCheats.sol/StdCheatsSafe.json +1 -1
- package/out/StdError.sol/stdError.json +1 -1
- package/out/StdInvariant.sol/StdInvariant.json +1 -1
- package/out/StdJson.sol/stdJson.json +1 -1
- package/out/StdMath.sol/stdMath.json +1 -1
- package/out/StdStorage.sol/stdStorage.json +1 -1
- package/out/StdStorage.sol/stdStorageSafe.json +1 -1
- package/out/StdStyle.sol/StdStyle.json +1 -1
- package/out/StdUtils.sol/StdUtils.json +1 -1
- package/out/Storage.sol/Storage.json +1 -1
- package/out/Store.sol/Store.json +1 -1
- package/out/StoreConsumer.sol/StoreConsumer.json +1 -1
- package/out/StoreCore.sol/StoreCore.json +1 -1
- package/out/StoreCore.sol/StoreCoreInternal.json +1 -1
- package/out/StoreHooks.sol/StoreHooks.json +1 -1
- package/out/StoreKernel.sol/StoreKernel.json +1 -1
- package/out/StoreRead.sol/StoreRead.json +1 -1
- package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +1 -1
- package/out/StoreSwitch.sol/StoreSwitch.json +1 -1
- package/out/System.sol/System.json +1 -1
- package/out/SystemCall.sol/SystemCall.json +1 -1
- package/out/SystemHooks.sol/SystemHooks.json +1 -1
- package/out/SystemRegistry.sol/SystemRegistry.json +1 -1
- package/out/Systems.sol/Systems.json +1 -1
- package/out/Tables.sol/Tables.json +1 -1
- package/out/Test.sol/Test.json +1 -1
- package/out/TightCoder.sol/TightCoder.json +1 -1
- package/out/TotalSupply.sol/TotalSupply.json +1 -1
- package/out/UserDelegationControl.sol/UserDelegationControl.json +1 -1
- package/out/Vm.sol/Vm.json +1 -1
- package/out/Vm.sol/VmSafe.json +1 -1
- package/out/WithStore.sol/WithStore.json +1 -1
- package/out/WithWorld.sol/WithWorld.abi.json +28 -0
- package/out/WithWorld.sol/WithWorld.abi.json.d.ts +28 -0
- package/out/WithWorld.sol/WithWorld.json +1 -1
- package/out/World.sol/World.json +1 -1
- package/out/WorldContext.sol/WorldContextConsumer.json +1 -1
- package/out/WorldContext.sol/WorldContextConsumerLib.json +1 -1
- package/out/WorldContext.sol/WorldContextProviderLib.json +1 -1
- package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1 -1
- package/out/WorldResourceId.sol/WorldResourceIdInstance.json +1 -1
- package/out/WorldResourceId.sol/WorldResourceIdLib.json +1 -1
- package/out/build-info/04cd01b00610d99132b6410373c2f462.json +1 -0
- package/out/console.sol/console.json +1 -1
- package/out/console2.sol/console2.json +1 -1
- package/out/constants.sol/LayoutOffsets.json +1 -1
- package/out/safeconsole.sol/safeconsole.json +1 -1
- package/out/src/IERC165.sol/IERC165.json +1 -1
- package/out/tables/Balances.sol/Balances.json +1 -1
- package/out/test.sol/DSTest.json +1 -1
- package/package.json +8 -7
- package/src/examples/ERC20WithInternalStore.sol +5 -5
- package/src/examples/ERC20WithWorld.sol +7 -5
- package/src/{ERC20Module.sol → experimental/ERC20Module.sol} +2 -2
- package/src/{MUDERC20.sol → experimental/MUDERC20.sol} +9 -10
- package/src/{Ownable.sol → experimental/Ownable.sol} +3 -3
- package/src/{Pausable.sol → experimental/Pausable.sol} +3 -3
- package/out/ERC20BaseTest.sol/ERC20BehaviorTest.json +0 -1
- package/out/ERC20BaseTest.sol/ERC20WithInternalStoreBehaviorTest.json +0 -1
- package/out/ERC20BaseTest.sol/ERC20WithInternalStoreTest.json +0 -1
- package/out/ERC20BaseTest.sol/ERC20WithWorldBehaviorTest.json +0 -1
- package/out/ERC20BaseTest.sol/ERC20WithWorldTest.json +0 -1
- package/out/ERC20BaseTest.sol/MockERC20Base.json +0 -1
- package/out/ERC20BaseTest.sol/MockERC20WithInternalStore.json +0 -1
- package/out/ERC20BaseTest.sol/MockERC20WithWorld.json +0 -1
- package/out/ERC20BaseTest.sol/TestConstants.json +0 -1
- package/out/StoreConsumer.t.sol/MockStoreConsumer.abi.json +0 -52
- package/out/StoreConsumer.t.sol/MockStoreConsumer.abi.json.d.ts +0 -54
- package/out/StoreConsumer.t.sol/MockStoreConsumer.json +0 -1
- package/out/StoreConsumer.t.sol/MockWithInternalStore.abi.json +0 -376
- package/out/StoreConsumer.t.sol/MockWithInternalStore.abi.json.d.ts +0 -378
- package/out/StoreConsumer.t.sol/MockWithInternalStore.json +0 -1
- package/out/StoreConsumer.t.sol/MockWithStore.abi.json +0 -387
- package/out/StoreConsumer.t.sol/MockWithStore.abi.json.d.ts +0 -389
- package/out/StoreConsumer.t.sol/MockWithStore.json +0 -1
- package/out/StoreConsumer.t.sol/MockWithWorld.abi.json +0 -430
- package/out/StoreConsumer.t.sol/MockWithWorld.abi.json.d.ts +0 -432
- package/out/StoreConsumer.t.sol/MockWithWorld.json +0 -1
- package/out/StoreConsumer.t.sol/StoreConsumerTest.abi.json +0 -548
- package/out/StoreConsumer.t.sol/StoreConsumerTest.abi.json.d.ts +0 -550
- package/out/StoreConsumer.t.sol/StoreConsumerTest.json +0 -1
- package/out/build-info/950e52f13a65568155d5c35a4ca4bf03.json +0 -1
- package/src/Context.sol +0 -10
- package/src/StoreConsumer.sol +0 -24
- package/src/WithStore.sol +0 -22
- package/src/WithWorld.sol +0 -40
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20BehaviorTest.abi.json +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20BehaviorTest.abi.json.d.ts +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithInternalStoreBehaviorTest.abi.json +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithInternalStoreBehaviorTest.abi.json.d.ts +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithInternalStoreTest.abi.json +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithInternalStoreTest.abi.json.d.ts +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithWorldBehaviorTest.abi.json +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithWorldBehaviorTest.abi.json.d.ts +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithWorldTest.abi.json +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/ERC20WithWorldTest.abi.json.d.ts +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/MockERC20Base.abi.json +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/MockERC20Base.abi.json.d.ts +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/MockERC20WithInternalStore.abi.json +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/MockERC20WithInternalStore.abi.json.d.ts +0 -0
- /package/out/{ERC20BaseTest.sol → ERC20BaseTest.t.sol}/TestConstants.abi.json +0 -0
- /package/src/{Constants.sol → experimental/Constants.sol} +0 -0
- /package/src/{ERC20Burnable.sol → experimental/ERC20Burnable.sol} +0 -0
- /package/src/{ERC20Pausable.sol → experimental/ERC20Pausable.sol} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testApprove","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testApprove","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"burnAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurnInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"burnAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInfiniteApproveTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMetadata","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintOverMaxUintReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNamespaceAccess","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSetUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"approval","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientAllowanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"approval","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientAllowanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientBalanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"sendAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferInsufficientBalanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"sendAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","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},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c5534801561003157600080fd5b506201d98580620000436000396000f3fe60806040523480156200001157600080fd5b5060043610620002365760003560e01c80637c0c53691162000142578063d591221f11620000cc578063f28e093d1162000097578063fa531f85116200007a578063fa531f851462000418578063fa7626d41462000422578063fb44e83a146200043057600080fd5b8063f28e093d14620003f7578063f63809d9146200040e57600080fd5b8063d591221f14620003c2578063e13aba4814620003cc578063e20c9f7114620003d6578063e70629ce14620003e057600080fd5b8063a0e70267116200010d578063a0e70267146200036f578063b5508aa91462000386578063ba414fa61462000390578063be4733bc14620003ab57600080fd5b80637c0c5369146200032b57806385226c811462000342578063916a17c6146200035b5780639642ddaf146200036557600080fd5b80633e5e3c2311620001c45780635babb758116200018f5780635babb75814620002f457806366d9a9a014620002fe5780637055729814620003175780637a715085146200032157600080fd5b80633e5e3c2314620002bf5780633f7286f414620002c957806348186a7f14620002d35780635ad7ef9214620002ea57600080fd5b80631ed7831c11620002055780631ed7831c14620002725780632d60f8a3146200029457806337e816d3146200029e5780633dc6c95514620002b557600080fd5b80630a9254e4146200023b5780631037c205146200024757806318eab016146200025e5780631aeb10a61462000268575b600080fd5b6200024562000447565b005b6200024562000258366004620053e7565b62000563565b62000245620008c3565b6200024562000c83565b6200027c62000e55565b6040516200028b91906200541f565b60405180910390f35b6200024562000eb9565b62000245620002af366004620053e7565b62000ef4565b620002456200130e565b6200027c620014ea565b6200027c6200154c565b62000245620002e43660046200546e565b620015ae565b6200024562001c92565b6200024562001ec1565b6200030862001eda565b6040516200028b9190620054d0565b6200024562001fe2565b62000245620023e1565b620002456200033c366004620053e7565b620026c8565b6200034c620029a6565b6040516200028b9190620055f5565b6200030862002a80565b6200024562002b7f565b62000245620003803660046200565d565b62002d79565b6200034c62003043565b6200039a6200311d565b60405190151581526020016200028b565b62000245620003bc366004620053e7565b62003269565b620002456200357a565b62000245620037fe565b6200027c62003acd565b62000245620003f1366004620053e7565b62003b2f565b62000245620004083660046200565d565b62003e2f565b620002456200401b565b62000245620041e6565b6000546200039a9060ff1681565b62000245620004413660046200565d565b62004327565b6200045162004411565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517fc2722ecc000000000000000000000000000000000000000000000000000000008152905162000561929163c2722ecc9160048083019260209291908290030181865afa158015620004e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050891906200568c565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620005b957600080fd5b505afa158015620005ce573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200062057600080fd5b505afa15801562000635573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b81526001600160a01b038781166004830152602482018790529091169250633dc8ded79150604401600060405180830381600087803b1580156200068857600080fd5b505af11580156200069d573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200070457600080fd5b505af115801562000719573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03861691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601f546040517faa82e0170000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018490529091169063aa82e01790604401600060405180830381600087803b158015620007c657600080fd5b505af1158015620007db573d6000803e3d6000fd5b505050506200086f601f60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000837573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200085d9190620056b3565b620008698385620056e3565b62004444565b601f546040516370a0823160e01b81526001600160a01b038581166004830152620008be9216906370a08231906024015b602060405180830381865afa15801562000837573d6000803e3d6000fd5b505050565b601f54604051633dc8ded760e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200091a57600080fd5b505af11580156200092f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200098957600080fd5b505af11580156200099e573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b815230600482015260001960248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af1158015620009f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1b9190620056f9565b50601f546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015262000aaf9216906323b872dd906064015b6020604051808303816000875af115801562000a83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aa99190620056f9565b62004556565b601f54604080516318160ddd60e01b8152905162000b31926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b229190620056b3565b670de0b6b3a764000062004444565b601f54604051636eb1769f60e11b81526001600160a01b03838116600483015230602483015262000bb492169063dd62ed3e90604401602060405180830381865afa15801562000b85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bab9190620056b3565b60001962004444565b601f546040516370a0823160e01b81526001600160a01b03838116600483015262000c319216906370a08231906024015b602060405180830381865afa15801562000c03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c299190620056b3565b600062004444565b601f546040516370a0823160e01b815261beef600482015262000c80916001600160a01b0316906370a08231906024015b602060405180830381865afa15801562000afc573d6000803e3d6000fd5b50565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562000ce657600080fd5b505af115801562000cfb573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a362000d806040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250620045ce565b601f5460405163095ea7b360e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000ddc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e029190620056f9565b905062000e0e620045e3565b62000e198162004556565b601f54604051636eb1769f60e11b815230600482015261beef602482015262000c80916001600160a01b03169063dd62ed3e9060440162000c62565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000eaf57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e90575b5050505050905090565b6200056162000aa97f6e736d6f636b65726332306e7300000000000000000000000000000000000000601f546001600160a01b031662004877565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000f4a57600080fd5b505afa15801562000f5f573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000fb257600080fd5b505afa15801562000fc7573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200101857600080fd5b505afa1580156200102d573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b815261abcd600482018190526024820186905293506001600160a01b039091169150633dc8ded790604401600060405180830381600087803b1580156200108357600080fd5b505af115801562001098573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620010f257600080fd5b505af115801562001107573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152602481018790526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200115d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011839190620056f9565b506040513060248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b200000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001251916004016200571d565b600060405180830381600087803b1580156200126c57600080fd5b505af115801562001281573d6000803e3d6000fd5b5050601f546040516323b872dd60e01b81526001600160a01b03858116600483015288811660248301526044820187905290911692506323b872dd91506064016020604051808303816000875af1158015620012e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013079190620056f9565b5050505050565b601f54604051633dc8ded760e01b8152306004820152670c7d713b49da000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b1580156200136257600080fd5b505af115801562001377573d6000803e3d6000fd5b505060408051306024820152670c7d713b49da00006044820152670de0b6b3a764000060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200143591906004016200571d565b600060405180830381600087803b1580156200145057600080fd5b505af115801562001465573d6000803e3d6000fd5b5050601f5460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116925063a9059cbb91506044016020604051808303816000875af1158015620014c4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c809190620056f9565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000eaf576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e90575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000eaf576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e90575050505050905090565b604051632631f2b160e11b81526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200160457600080fd5b505afa15801562001619573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03861615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200167357600080fd5b505afa15801562001688573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03881615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620016e257600080fd5b505afa158015620016f7573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200174957600080fd5b505afa1580156200175e573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b81526001600160a01b038881166004830152602482018690529091169250633dc8ded79150604401600060405180830381600087803b158015620017b157600080fd5b505af1158015620017c6573d6000803e3d6000fd5b5050601f546040516370a0823160e01b81526001600160a01b03888116600483015262001848945090911691506370a08231906024015b602060405180830381865afa1580156200181b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018419190620056b3565b8262004444565b60405163ca669fa760e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200189e57600080fd5b505af1158015620018b3573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b81526001600160a01b03898116600483015260248201879052909116925063095ea7b391506044016020604051808303816000875af11580156200190b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019319190620056f9565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156200199557600080fd5b505af1158015620019aa573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620019f491815260200190565b60405180910390a360405163ca669fa760e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a5257600080fd5b505af115801562001a67573d6000803e3d6000fd5b5050601f546040516323b872dd60e01b81526001600160a01b03888116600483015287811660248301526044820186905262001ab2945090911691506323b872dd9060640162000a63565b601f54604080516318160ddd60e01b8152905162001aff926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156200181b573d6000803e3d6000fd5b600019820362001b9257601f54604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001b8c92169063dd62ed3e90604401602060405180830381865afa15801562001b5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b859190620056b3565b8362004444565b62001bd0565b601f54604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001bd092169063dd62ed3e90604401620008a0565b826001600160a01b0316846001600160a01b03160362001c2657601f546040516370a0823160e01b81526001600160a01b03868116600483015262001c209216906370a0823190602401620017fd565b62001307565b601f546040516370a0823160e01b81526001600160a01b03868116600483015262001c5c9216906370a082319060240162000be5565b601f546040516370a0823160e01b81526001600160a01b038581166004830152620013079216906370a0823190602401620017fd565b601f54604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162001d5e926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001cf8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d22919081019062005748565b6040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525062004954565b601f54604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162001e2a926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001dc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001dee919081019062005748565b6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525062004954565b601f54604080517f313ce567000000000000000000000000000000000000000000000000000000008152905162000561926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801562001e90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eb6919062005801565b60ff16601262004444565b601f5462000561906001600160a01b0316151562004556565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001fd95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001fc057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001f6c5790505b5050505050815250508152602001906001019062001efe565b50505050905090565b601f54604051633dc8ded760e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200203957600080fd5b505af11580156200204e573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620020a857600080fd5b505af1158015620020bd573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200211a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021409190620056f9565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620021a457600080fd5b505af1158015620021b9573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92506001600160a01b03841691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620022476040518060400160405280600c81526020017f7472616e7366657246726f6d0000000000000000000000000000000000000000815250620045ce565b601f546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015260009216906323b872dd906064016020604051808303816000875af1158015620022ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022d19190620056f9565b9050620022dd620045e3565b620022e88162004556565b601f54604080516318160ddd60e01b8152905162002335926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b601f54604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526200237192169063dd62ed3e9060440162000be5565b601f546040516370a0823160e01b81526001600160a01b038481166004830152620023a79216906370a082319060240162000be5565b601f546040516370a0823160e01b815261beef6004820152620023dd916001600160a01b0316906370a082319060240162000c62565b5050565b601f54604051633dc8ded760e01b815261abcd60048201819052670c7d713b49da00006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200243857600080fd5b505af11580156200244d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620024a757600080fd5b505af1158015620024bc573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002519573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200253f9190620056f9565b506040516001600160a01b0382166024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200260b916004016200571d565b600060405180830381600087803b1580156200262657600080fd5b505af11580156200263b573d6000803e3d6000fd5b5050601f546040516323b872dd60e01b81526001600160a01b03858116600483015261beef6024830152670de0b6b3a7640000604483015290911692506323b872dd91506064016020604051808303816000875af1158015620026a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023dd9190620056f9565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200271e57600080fd5b505afa15801562002733573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200278657600080fd5b505afa1580156200279b573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620027ec57600080fd5b505afa15801562002801573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b815261abcd600482018190526024820187905293506001600160a01b039091169150633dc8ded790604401600060405180830381600087803b1580156200285757600080fd5b505af11580156200286c573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620028c657600080fd5b505af1158015620028db573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152602481018690526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029579190620056f9565b506040516001600160a01b03821660248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b90608401620011dd565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001fd9578382906000526020600020018054620029ec9062005826565b80601f016020809104026020016040519081016040528092919081815260200182805462002a1a9062005826565b801562002a6b5780601f1062002a3f5761010080835404028352916020019162002a6b565b820191906000526020600020905b81548152906001019060200180831162002a4d57829003601f168201915b505050505081526020019060010190620029ca565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001fd95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002b6657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002b125790505b5050505050815250508152602001906001019062002aa4565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002be257600080fd5b505af115801562002bf7573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef9250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362002c7d6040518060400160405280600481526020017f6d696e7400000000000000000000000000000000000000000000000000000000815250620045ce565b601f54604051633dc8ded760e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b15801562002cd357600080fd5b505af115801562002ce8573d6000803e3d6000fd5b5050505062002cf6620045e3565b601f54604080516318160ddd60e01b8152905162002d43926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b601f546040516370a0823160e01b815261beef600482015262000561916001600160a01b0316906370a082319060240162000c62565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002dcf57600080fd5b505afa15801562002de4573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b8152306004820152602481018590526001600160a01b039091169250633dc8ded79150604401600060405180830381600087803b15801562002e3557600080fd5b505af115801562002e4a573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562002eb157600080fd5b505af115801562002ec6573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601f5460405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905262002f4792169063a9059cbb9060440162000a63565b601f54604080516318160ddd60e01b8152905162002f94926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156200181b573d6000803e3d6000fd5b6001600160a01b038216300362002fd957601f546040516370a0823160e01b8152306004820152620023dd916001600160a01b0316906370a0823190602401620017fd565b601f546040516370a0823160e01b81523060048201526200300d916001600160a01b0316906370a082319060240162000be5565b601f546040516370a0823160e01b81526001600160a01b038481166004830152620023dd9216906370a0823190602401620017fd565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001fd9578382906000526020600020018054620030899062005826565b80601f0160208091040260200160405190810160405280929190818152602001828054620030b79062005826565b8015620031085780601f10620030dc5761010080835404028352916020019162003108565b820191906000526020600020905b815481529060010190602001808311620030ea57829003601f168201915b50505050508152602001906001019062003067565b60008054610100900460ff16156200313e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620032645760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620031e6917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005862565b60408051601f19818403018152908290526200320291620058ac565b6000604051808303816000865af19150503d806000811462003241576040519150601f19603f3d011682016040523d82523d6000602084013e62003246565b606091505b5091505080806020019051810190620032609190620056f9565b9150505b919050565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620032bf57600080fd5b505afa158015620032d4573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200332757600080fd5b505afa1580156200333c573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200338d57600080fd5b505afa158015620033a2573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b81526001600160a01b038781166004830152602482018790529091169250633dc8ded79150604401600060405180830381600087803b158015620033f557600080fd5b505af11580156200340a573d6000803e3d6000fd5b5050604080516001600160a01b038716602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620034c091906004016200571d565b600060405180830381600087803b158015620034db57600080fd5b505af1158015620034f0573d6000803e3d6000fd5b5050601f546040517faa82e0170000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201869052909116925063aa82e0179150604401600060405180830381600087803b1580156200355c57600080fd5b505af115801562003571573d6000803e3d6000fd5b50505050505050565b601f54604051633dc8ded760e01b8152306004820152670de0b6b3a764000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b158015620035ce57600080fd5b505af1158015620035e3573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200364a57600080fd5b505af11580156200365f573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620036e46040518060400160405280600881526020017f7472616e73666572000000000000000000000000000000000000000000000000815250620045ce565b601f5460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af115801562003740573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037669190620056f9565b905062003772620045e3565b6200377d8162004556565b601f54604080516318160ddd60e01b81529051620037ca926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b601f546040516370a0823160e01b815230600482015262000c31916001600160a01b0316906370a082319060240162000be5565b601f54604051633dc8ded760e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b1580156200385457600080fd5b505af115801562003869573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620038d057600080fd5b505af1158015620038e5573d6000803e3d6000fd5b5050604051670c7d713b49da000081526000925061beef91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200396b6040518060400160405280600481526020017f6275726e00000000000000000000000000000000000000000000000000000000815250620045ce565b601f546040517faa82e01700000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da000060248201526001600160a01b039091169063aa82e01790604401600060405180830381600087803b158015620039da57600080fd5b505af1158015620039ef573d6000803e3d6000fd5b50505050620039fd620045e3565b601f54604080516318160ddd60e01b8152905162003a7f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562003a4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a709190620056b3565b67016345785d8a000062004444565b601f546040516370a0823160e01b815261beef600482015262000561916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003a4a573d6000803e3d6000fd5b6060600c80548060200260200160405190810160405280929190818152602001828054801562000eaf576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e90575050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003b8557600080fd5b505afa15801562003b9a573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003bed57600080fd5b505afa15801562003c02573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003c5357600080fd5b505afa15801562003c68573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b8152306004820152602481018690526001600160a01b039091169250633dc8ded79150604401600060405180830381600087803b15801562003cb957600080fd5b505af115801562003cce573d6000803e3d6000fd5b50506040805130602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062003d7b91906004016200571d565b600060405180830381600087803b15801562003d9657600080fd5b505af115801562003dab573d6000803e3d6000fd5b5050601f5460405163a9059cbb60e01b81526001600160a01b03878116600483015260248201869052909116925063a9059cbb91506044016020604051808303816000875af115801562003e03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e299190620056f9565b50505050565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003e8557600080fd5b505afa15801562003e9a573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562003f0157600080fd5b505af115801562003f16573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601f54604051633dc8ded760e01b81526001600160a01b0384811660048301526024820184905290911690633dc8ded790604401600060405180830381600087803b15801562003faa57600080fd5b505af115801562003fbf573d6000803e3d6000fd5b505050506200300d601f60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200181b573d6000803e3d6000fd5b601f54604051633dc8ded760e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200407257600080fd5b505af115801562004087573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620040e157600080fd5b505af1158015620040f6573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562004153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041799190620056f9565b50604051306024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b2000000000000000000000000000000000000000000000000000000009060840162002597565b601f54604051633dc8ded760e01b815230600482015260001960248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b1580156200423457600080fd5b505af115801562004249573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620042ac57600080fd5b505af1158015620042c1573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b8152306004820152600160248201526001600160a01b039091169250633dc8ded79150604401600060405180830381600087803b1580156200431257600080fd5b505af115801562003e29573d6000803e3d6000fd5b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200437d57600080fd5b505afa15801562004392573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052620043d59450909116915063095ea7b39060440162000a63565b601f54604051636eb1769f60e11b81523060048201526001600160a01b038481166024830152620023dd92169063dd62ed3e90604401620017fd565b60006040516200442190620053c2565b604051809103906000f0801580156200443e573d6000803e3d6000fd5b50905090565b808214620023dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620044d29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8826040516200450b9190620058ca565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162004544919062005916565b60405180910390a1620023dd62004aa4565b8062000c80577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045bc9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000c8062004aa4565b62000c80620045dd8262004beb565b62004d2c565b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af11580156200468b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046b19190620056f9565b620046b95750565b600060a082601c54620046cd9190620056e3565b620046d99190620056e3565b620046e690600162005954565b90506000811162004758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e277420757365206761730000000000000060448201526064015b60405180910390fd5b80601d601b6040516200476c919062005a03565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35001620047bb601b8262005a65565b5062004859601b8054620047cf9062005826565b80601f0160208091040260200160405190810160405280929190818152602001828054620047fd9062005826565b80156200484e5780601f1062004822576101008083540402835291602001916200484e565b820191906000526020600020905b8154815290600101906020018083116200483057829003601f168201915b505050505062004ff7565b604080516020810190915260008152601b90620008be908262005b52565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110620048b357620048b362005c16565b602002602001018181525050826001600160a01b031660001b81600181518110620048e257620048e262005c16565b602090810291909101015260006200493c7f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000620050fa565b9050620049498160f81c90565b925050505b92915050565b80604051602001620049679190620058ac565b6040516020818303038152906040528051906020012082604051602001620049909190620058ac565b6040516020818303038152906040528051906020012014620023dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a329060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162004a6b919062005c2c565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004544919062005c7e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562004bbd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262004b58929160200162005862565b60408051601f198184030181529082905262004b7491620058ac565b6000604051808303816000865af19150503d806000811462004bb3576040519150601f19603f3d011682016040523d82523d6000602084013e62004bb8565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b601f54604080517fc2722ecc00000000000000000000000000000000000000000000000000000000815290516060926000926001600160a01b0390911691829163c2722ecc9160048083019260209291908290030181865afa15801562004c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c7c91906200568c565b6001600160a01b03161462004cc7576040518060400160405280600681526020017f776f726c645f000000000000000000000000000000000000000000000000000081525062004cfe565b6040518060400160405280600981526020017f696e7465726e616c5f00000000000000000000000000000000000000000000008152505b9050808360405160200162004d1592919062005cbc565b604051602081830303815290604052915050919050565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004dce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004df49190620056f9565b62004dfc5750565b601b805462004e0b9062005826565b9050600014601b60405160200162004e24919062005cef565b6040516020818303038152906040529062004e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200474f91906200571d565b50601d8160405162004e819190620058ac565b9081526020016040518091039020546000148160405160200162004ea6919062005d76565b6040516020818303038152906040529062004ef0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200474f91906200571d565b50601b62004eff828262005b52565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004f5f57600080fd5b505af115801562004f74573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562004fe257600080fd5b505af115801562001307573d6000803e3d6000fd5b62000c807f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d846040516200503f9190620058ac565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252620050899160040190815260200190565b600060405180830381865afa158015620050a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620050d1919081019062005748565b82604051602001620050e592919062005de4565b604051602081830303815290604052620051ca565b600080620051076200523f565b9050306001600160a01b03821603620051315762005128868686866200527a565b915050620051c2565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906200517e90899089908990899060040162005e69565b602060405180830381865afa1580156200519c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051289190620056b3565b949350505050565b62000c8081604051602401620051e191906200571d565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620052b6565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168062003264573391505090565b6000620052ad6200528c8686620052d7565b60ff858116601b0360080285901c16620052a785876200532f565b6200536c565b95945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008282604051602001620052ee92919062005ec8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562005364576200535960ff601b83900360080287901c168362005954565b915060010162005334565b509392505050565b600060208210620053965760208204840193506020828162005392576200539262005f06565b0691505b508254600882021b60208290038084111562005364576001850154600882021c82179150509392505050565b62017a5c8062005f1d83390190565b6001600160a01b038116811462000c8057600080fd5b600080600060608486031215620053fd57600080fd5b83356200540a81620053d1565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015620054625783516001600160a01b0316835292840192918401916001016200543b565b50909695505050505050565b600080600080600060a086880312156200548757600080fd5b85356200549481620053d1565b94506020860135620054a681620053d1565b93506040860135620054b881620053d1565b94979396509394606081013594506080013592915050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b848110156200559257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200557c5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005538565b50978a01979550505091870191600101620054fa565b50919998505050505050505050565b60005b83811015620055be578181015183820152602001620055a4565b50506000910152565b60008151808452620055e1816020860160208601620055a1565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200565057603f198886030184526200563d858351620055c7565b945092850192908501906001016200561e565b5092979650505050505050565b600080604083850312156200567157600080fd5b82356200567e81620053d1565b946020939093013593505050565b6000602082840312156200569f57600080fd5b8151620056ac81620053d1565b9392505050565b600060208284031215620056c657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156200494e576200494e620056cd565b6000602082840312156200570c57600080fd5b81518015158114620056ac57600080fd5b602081526000620056ac6020830184620055c7565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156200575b57600080fd5b815167ffffffffffffffff808211156200577457600080fd5b818401915084601f8301126200578957600080fd5b8151818111156200579e576200579e62005732565b604051601f8201601f19908116603f01168101908382118183101715620057c957620057c962005732565b81604052828152876020848701011115620057e357600080fd5b620057f6836020830160208801620055a1565b979650505050505050565b6000602082840312156200581457600080fd5b815160ff81168114620056ac57600080fd5b600181811c908216806200583b57607f821691505b6020821081036200585c57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200589e816004850160208701620055a1565b919091016004019392505050565b60008251620058c0818460208701620055a1565b9190910192915050565b6040815260006200590860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200590860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b808201808211156200494e576200494e620056cd565b60008154620059798162005826565b60018281168015620059945760018114620059c857620059f9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620059f9565b8560005260208060002060005b85811015620059f05781548a820152908401908201620059d5565b50505082870194505b5050505092915050565b6000620056ac82846200596a565b601f821115620008be576000816000526020600020601f850160051c8101602086101562005a3c5750805b601f850160051c820191505b8181101562005a5d5782815560010162005a48565b505050505050565b81810362005a71575050565b62005a7d825462005826565b67ffffffffffffffff81111562005a985762005a9862005732565b62005ab08162005aa9845462005826565b8462005a11565b6000601f82116001811462005ae7576000831562005ace5750848201545b600019600385901b1c1916600184901b17845562001307565b600085815260209020601f19841690600086815260209020845b8381101562005b23578286015482556001958601959091019060200162005b01565b508583101562005b425781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b815167ffffffffffffffff81111562005b6f5762005b6f62005732565b62005b808162005aa9845462005826565b602080601f83116001811462005bb8576000841562005b9f5750858301515b600019600386901b1c1916600185901b17855562005a5d565b600085815260208120601f198616915b8281101562005be95788860151825594840194600190910190840162005bc8565b508582101562005b4257939096015160001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b60408152600062005c6a60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620051c28185620055c7565b60408152600062005c6a60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6000835162005cd0818460208801620055a1565b83519083019062005ce6818360208801620055a1565b01949350505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600062005d23600c8301846200596a565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000825162005db081600c850160208701620055a1565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b7f474153205245504f52543a20000000000000000000000000000000000000000081526000835162005e1e81600c850160208801620055a1565b7f2000000000000000000000000000000000000000000000000000000000000000600c91840191820152835162005e5d81600d840160208801620055a1565b01600d01949350505050565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b8181101562005eae5784518352938301939183019160010162005e90565b505060ff9690961660408501525050506060015292915050565b8281526000602080830184516020860160005b8281101562005ef95781518452928401929084019060010162005edb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe6101206040523480156200001257600080fd5b50604051806040016040528060058152602001642a37b5b2b760d91b815250604051806040016040528060038152602001622a25a760e91b8152506200005d620001ff60201b60201c565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b0319166001600160a01b0383161790556a6d6f636b65726332306e7360a81b81306001600160a01b03821603620000c257620000c2620002a6565b506001600160901b031981166080526000620000dd620004d3565b60405163b29e408960e01b8152600481018290529091506001600160a01b0384169063b29e408990602401600060405180830381600087803b1580156200012357600080fd5b505af115801562000138573d6000803e3d6000fd5b505050505050506200015f6b544f54414c5f535550504c5960a01b620004ed60201b60201c565b60a052620001786742414c414e43455360c01b620004ed565b60c0526200019369414c4c4f57414e43455360b01b620004ed565b60e052620001ac674d4554414441544160c01b620004ed565b6101005260a051620001be9062000506565b60c051620001cc906200053a565b60e051620001da906200056b565b61010051620001e99062000593565b620001f782826012620005c0565b505062002aa0565b60006040516200020f90620025fc565b604051809103906000f0801580156200022c573d6000803e3d6000fd5b5090506001600160a01b03811663c4d66de862000248620005f3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200028a57600080fd5b505af11580156200029f573d6000803e3d6000fd5b5050505090565b620002d17f746273746f72650000000000000000005461626c657300000000000000000000620006fe565b156200033957604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f198184030181529082905263dfaaf9cf60e01b8252620003309291600401620026a4565b60405180910390fd5b6200035360008051602062017a3c833981519152620006fe565b156200037c576040805160008051602062017a3c83398151915260208201819052910162000306565b6200041d7f746273746f72650000000000000000005461626c6573000000000000000000006503001811010160cd1b632001005f60d81b671800c097d7d7f13160ba1b620003c96200077b565b604051602001620003db91906200271d565b60408051601f19818403018152919052620003f5620007ee565b6040516020016200040791906200271d565b60408051601f1981840301815291905262000983565b6200047e60008051602062017a3c833981519152630101000160d81b632001005f60d81b6208080360dd1b6200045262000a59565b6040516020016200046491906200271d565b60408051601f19818403018152919052620003f562000ac1565b620004ab7f746273746f72650000000000000000005461626c657300000000000000000000600162000b25565b620004c760008051602062017a3c833981519152600162000b25565b620004d162000bc0565b565b6000620004e860805162000c0b60201b60201c565b905090565b600062000500613a3160f11b8362000c24565b92915050565b6200053781630100080160dd1b6000632001001f60d81b6200052762000c42565b6200053162000c76565b62000cdf565b50565b6200053781630100080160dd1b631401006160d81b632001001f60d81b6200056162000d8a565b6200053162000def565b6200053781630100080160dd1b64280200616160d01b632001001f60d81b6200056162000e52565b6200053781630101020160d81b60006501010200c5c560c81b620005b662000c42565b6200053162000ef7565b6040805160608101825260ff831681526020810185905290810183905261010051620005ed908262000fdc565b50505050565b600060405162000603906200260a565b604051809103906000f08015801562000620573d6000803e3d6000fd5b506040516200062f9062002618565b604051809103906000f0801580156200064c573d6000803e3d6000fd5b506040516200065b9062002626565b604051809103906000f08015801562000678573d6000803e3d6000fd5b50604051620006879062002634565b604051809103906000f080158015620006a4573d6000803e3d6000fd5b50604051620006b39062002642565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620006f8573d6000803e3d6000fd5b50905090565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106200073a576200073a62002732565b602090810291909101015260006200076b60008051602062017a3c8339815191528383630101000160d81b62001090565b905060f881901c5b949350505050565b604080516001808252818301909252606091816020015b606081526020019060019003908162000792579050509050604051806040016040528060078152602001661d18589b19525960ca1b81525081600081518110620007e057620007e062002732565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081620008065790505090506040518060400160405280600b81526020016a199a595b1913185e5bdd5d60aa1b8152508160008151811062000858576200085862002732565b6020026020010181905250604051806040016040528060098152602001686b6579536368656d6160b81b815250816001815181106200089b576200089b62002732565b60200260200101819052506040518060400160405280600b81526020016a76616c7565536368656d6160a81b81525081600281518110620008e057620008e062002732565b602002602001018190525060405180604001604052806012815260200171616269456e636f6465644b65794e616d657360701b815250816003815181106200092c576200092c62002732565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110620007e057620007e062002732565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000620009bc8484620010cc565b90506000620009cc8585620010e2565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811062000a095762000a0962002732565b602090810291909101015262000a4d7f746273746f72650000000000000000005461626c657300000000000000000000828686866503001811010160cd1b62001110565b50505050505050505050565b604080516001808252818301909252606091816020015b606081526020019060019003908162000a705790505090506040518060400160405280600a8152602001691c995cdbdd5c98d9525960b21b81525081600081518110620007e057620007e062002732565b604080516001808252818301909252606091816020015b606081526020019060019003908162000ad85790505090506040518060400160405280600681526020016565786973747360d01b81525081600081518110620007e057620007e062002732565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811062000b5e5762000b5e62002732565b60200260200101818152505062000bbb60008051602062017a3c83398151915260001b8260008560405160200162000b9d91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b620013e8565b505050565b620004d17f746273746f726500000000000000000053746f7265486f6f6b73000000000000600160e01b632001005f60d81b60db60d91b62000c016200077b565b6200053162001408565b60101c600160801b600160f01b0316616e7360f01b1790565b600062000c3b83608051846200146b60201b60201c565b9392505050565b60408051600080825260208201909252606091620006f8565b606081526020019060019003908162000c5b57905050905090565b604080516001808252818301909252606091816020015b606081526020019060019003908162000c8d5790505090506040518060400160405280600b81526020016a746f74616c537570706c7960a81b81525081600081518110620007e057620007e062002732565b600062000ceb620014b0565b9050306001600160a01b0382160362000d145762000d0e878787878787620014f0565b62000d81565b604051630ba51f4960e01b81526001600160a01b03821690630ba51f499062000d4c908a908a908a908a908a908a9060040162002748565b600060405180830381600087803b15801562000d6757600080fd5b505af115801562000d7c573d6000803e3d6000fd5b505050505b50505050505050565b604080516001808252818301909252606091816020015b606081526020019060019003908162000da1579050509050604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525081600081518110620007e057620007e062002732565b604080516001808252818301909252606091816020015b606081526020019060019003908162000e065790505090506040518060400160405280600581526020016476616c756560d81b81525081600081518110620007e057620007e062002732565b6040805160028082526060828101909352816020015b606081526020019060019003908162000e68579050509050604051806040016040528060078152602001661858d8dbdd5b9d60ca1b8152508160008151811062000eb65762000eb662002732565b60200260200101819052506040518060400160405280600781526020016639b832b73232b960c91b81525081600181518110620007e057620007e062002732565b60408051600380825260808201909252606091816020015b606081526020019060019003908162000f0f57905050905060405180604001604052806008815260200167646563696d616c7360c01b8152508160008151811062000f5e5762000f5e62002732565b6020026020010181905250604051806040016040528060048152602001636e616d6560e01b8152508160018151811062000f9c5762000f9c62002732565b6020026020010181905250604051806040016040528060068152602001651cde5b589bdb60d21b81525081600281518110620007e057620007e062002732565b80516000906200102b906040805160f89290921b7fff00000000000000000000000000000000000000000000000000000000000000166020830152805160018184030181526021909201905290565b905060006200104983602001518460400151620010cc60201b60201c565b905060006200106784602001518560400151620010e260201b60201c565b6040805160008152602081019091529091506200108886828686866200189d565b505050505050565b6000620010c3620010a2868662001937565b60ff858116601b0360080285901c16620010bd85876200198f565b620019cc565b95945050505050565b600062000c3b8351835162001a2260201b60201c565b60608282604051602001620010f992919062002796565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b031916036200115c578560008051602062017a1c833981519152868686866040516200114e949392919062002807565b60405180910390a262001088565b6000620011698762001a37565b905060005b81518110156200122b5760008282815181106200118f576200118f62002732565b60209081029190910101519050620011b36001600160581b03198216600162001acf565b1562001221576040516315c19b2760e21b8152606082901c906357066c9c90620011ec908c908c908c908c908c908c9060040162002857565b600060405180830381600087803b1580156200120757600080fd5b505af11580156200121c573d6000803e3d6000fd5b505050505b506001016200116e565b508660008051602062017a1c8339815191528787878760405162001253949392919062002807565b60405180910390a2600062001269888862001937565b905060006020870190506200128982600089518462001af460201b60201c565b6000620012968562001bbe565b111562001328576000620012ab8a8a62001c03565b878155905060208601915060008060005b620012c78862001bbe565b8160ff1610156200132357620012df8d8d8362001c5b565b9250620012fb8a8260ff166028026038011c64ffffffffff1690565b91506200130c836000848862001af4565b620013188286620028cc565b9450600101620012bc565b505050505b60005b835181101562000a4d5760008482815181106200134c576200134c62002732565b60209081029190910101519050620013706001600160581b03198216600262001acf565b15620013de57604051635b28cdaf60e01b8152606082901c90635b28cdaf90620013a9908e908e908e908e908e908e9060040162002857565b600060405180830381600087803b158015620013c457600080fd5b505af1158015620013d9573d6000803e3d6000fd5b505050505b506001016200132b565b620014018585620013fa84876200198f565b8562001cc5565b5050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816200141f57905050905060405180604001604052806005815260200164686f6f6b7360d81b81525081600081518110620007e057620007e062002732565b60006200147b60706010620028cc565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620014eb573391505090565b919050565b613a3160f11b866001600160f01b031916148015906200151f5750611bdd60f21b866001600160f01b03191614155b156200156b57613a3160f11b86876040516020016200154091815260200190565b60408051601f19818403018152908290526331b4668360e01b825262000330939291600401620028e2565b620015768562001ee9565b620015838460016200209e565b620015908360006200209e565b60e084901c60e885901c0160ff16825114620015d95760e084901c60e885901c0160ff1682516040516301ee597360e31b81526004810192909252602482015260440162000330565b60e085901c60e886901c0160ff16815114620016215760e085901c60e886901c0160ff168151604051621f7b1360ea1b81526004810192909252602482015260440162000330565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614620016825760e085901c60e886901c0160ff1660e084901c60e885901c0160ff16604051631e53a9b160e31b81526004810192909252602482015260440162000330565b6200168d8562002229565b620016988462002229565b14620016d757620016a98562002229565b620016b48462002229565b6040516365cc0adf60e01b81526004810192909252602482015260440162000330565b620016e28562001bbe565b620016ed8462001bbe565b146200172c57620016fe8562001bbe565b620017098462001bbe565b60405163edea958760e01b81526004810192909252602482015260440162000330565b60005b6200173a8662002229565b811015620017ca576200176c6200175285836200223d565b60c58111156200176657620017666200290a565b62002261565b6008601b8390030287901c60ff1614620017c1576008601b8290030286901c60ff166200179e6200175286846200223d565b6040516309531f6d60e21b81526004810192909252602482015260440162000330565b6001016200172f565b506000620017f6613a3160f11b620017e28960101b90565b60101c6001600160f01b0319919091161790565b905060006200180f611bdd60f21b620017e28a60101b90565b90506200181c82620006fe565b806200182e57506200182e81620006fe565b15620018495787886040516020016200030691815260200190565b6200188688888888886040516020016200186491906200271d565b604051602081830303815290604052886040516020016200040791906200271d565b6200189388600162000b25565b5050505050505050565b6000620018a9620014b0565b9050306001600160a01b03821603620018d157620018cb8686868686620022c3565b62001088565b60405163298314fb60e01b81526001600160a01b0382169063298314fb9062001907908990899089908990899060040162002920565b600060405180830381600087803b1580156200192257600080fd5b505af115801562000a4d573d6000803e3d6000fd5b600082826040516020016200194e92919062002977565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015620019c457620019b960ff601b83900360080287901c1683620028cc565b915060010162001994565b509392505050565b600060208210620019f657602082048401935060208281620019f257620019f2620029b5565b0691505b508254600882021b602082900380841115620019c4576001850154600882021c82179150509392505050565b606081901b603883901b838301171792915050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811062001a745762001a7462002732565b6020908102919091010152600062001aae7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383620022dd565b90506200077362001ac982600084516200231e60201b60201c565b62002392565b600060ff82168262001ae18560581c90565b1660ff1614905092915050565b60200190565b821562001b76576020831062001b235760208304840193506020838162001b1f5762001b1f620029b5565b0692505b821562001b765760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841162001b67575050620005ed565b50600194909401939182900391015b5b6020821062001b9a5780518455600190930192601f199091019060200162001b77565b8115620005ed576000600019600884021c8554835182191691161785555050505050565b6000600860018062001bd360026020620029cb565b62001bdf9190620029cb565b62001beb9190620029cb565b62001bf79190620029e1565b8260ff911c1692915050565b6000828260405160200162001c1a92919062002977565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200162001c7292919062002977565b604051602081830303815290604052805190602001208260f81b6001600160f81b0319167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b611bdd60f21b846001600160f01b0319160362001d0f5783600080516020620179fc83398151915284848460405162001d0193929190620029fb565b60405180910390a2620005ed565b600062001d1d858562001937565b9050600062001d2c8662001a37565b905060005b815181101562001dea57600082828151811062001d525762001d5262002732565b6020908102919091010151905062001d766001600160581b03198216600462001acf565b1562001de05760405163964f667d60e01b8152606082901c9063964f667d9062001dab908b908b908b908b9060040162002a3c565b600060405180830381600087803b15801562001dc657600080fd5b505af115801562001ddb573d6000803e3d6000fd5b505050505b5060010162001d31565b5085600080516020620179fc83398151915286868660405162001e1093929190620029fb565b60405180910390a262001e2d8265ffffffffffff861685620023a4565b60005b815181101562000d8157600082828151811062001e515762001e5162002732565b6020908102919091010151905062001e756001600160581b03198216600862001acf565b1562001edf5760405163a8ba872160e01b8152606082901c9063a8ba87219062001eaa908b908b908b908b9060040162002a3c565b600060405180830381600087803b15801562001ec557600080fd5b505af115801562001eda573d6000803e3d6000fd5b505050505b5060010162001e30565b8062001f085760405163500cf26d60e11b815260040160405180910390fd5b600062001f158262001bbe565b9050600581111562001f45576040516333c9efb160e11b8152600481018290526005602482015260440162000330565b600062001f528362002229565b9050600062001f628383620028cc565b9050601c81111562001f925760405163ecd893b960e01b815260048101829052601c602482015260440162000330565b6000805b83811015620020135760ff601b82900360080287901c16600081900362001fd4576040516353b2dd0560e01b81526004810183905260240162000330565b602081111562001ffb57604051637237f23760e01b81526004810183905260240162000330565b620020078184620028cc565b92505060010162001f96565b506200201f85620023c3565b811462002056576200203185620023c3565b6040516375d4b26f60e11b815260048101919091526024810182905260440162000330565b825b601c811015620010885760ff601b82900360080287901c1680156200209457604051631d8d44db60e01b81526004810183905260240162000330565b5060010162002058565b80158015620020ab575081155b15620020ce5760405163d498615960e01b81526000600482015260240162000330565b6000620020db8362001bbe565b90506005811115620021045760405163d498615960e01b81526004810182905260240162000330565b6000620021118462002229565b90506000620021218383620028cc565b9050601c8111156200214a5760405163d498615960e01b81526004810182905260240162000330565b6000805b83811015620021a5576000620021696200175289846200223d565b9050806000036200218d576040516307a25a1160e51b815260040160405180910390fd5b620021998184620028cc565b9250506001016200214e565b50620021b186620023c3565b8114620021e057620021c386620023c3565b60405163d498615960e01b81526004016200033091815260200190565b825b8281101562000d81576000620021fd6200175289846200223d565b905080156200221f576040516307a25a1160e51b815260040160405180910390fd5b50600101620021e2565b60006008600162001bdf60026020620029cb565b6000601b8290036008028360ff911c1660c581111562000c3b5762000c3b6200290a565b6000808260c58111156200227957620022796200290a565b60ff16905060618110156200229457601f1660010192915050565b60618360c5811115620022ab57620022ab6200290a565b03620022ba5750601492915050565b50600092915050565b620014018585858585620022d785620023ea565b62001110565b606062000773620022f085858562001c5b565b6000620023188562002303898962002453565b9060ff166028026038011c64ffffffffff1690565b62002469565b6000818311806200232f5750835182115b1562002356578383836040516323230fa360e01b8152600401620003309392919062002a79565b60208401620023668482620028cc565b90506000620023768585620029cb565b6001600160801b031660809290921b9190911795945050505050565b6060600062000c3b836015836200248e565b62000bbb83838351620023bd8562001aee60201b60201c565b62001af4565b60006008620023d560026020620029cb565b620023e19190620029e1565b9190911c919050565b6000655461626c657360501b668b9d8c8b908d9b60c81b0382016200241957506503001811010160cd1b919050565b62000500620024497f746273746f72650000000000000000005461626c6573000000000000000000008462002506565b60206000620019cc565b600062000c3b62002465848462001c03565b5490565b60405160208101601f19603f8484010116604052828252620019c48585858462002523565b606060006200249d8560801c90565b90506001600160801b0385166000858281620024bd57620024bd620029b5565b04905060405193506020840160208202810160405281855260005b82811015620024fa578451871c825293870193602090910190600101620024d8565b50505050509392505050565b60408051602081018490529081018290526000906060016200194e565b8215620025b4576020831062002552576020830484019350602083816200254e576200254e620029b5565b0692505b8215620025b4576020839003600081841015620025785750600019600884021c62002582565b50600019600882021c5b8554600886021b818451168219821617845250818411620025a5575050620005ed565b50600194909401939182900391015b5b60208210620025d85783548152600190930192601f1990910190602001620025b5565b8115620005ed576000600019600884021c8251865482191691161782525050505050565b61538c80620045db83390190565b611c68806200996783390190565b61178f806200b5cf83390190565b610b38806200cd5e83390190565b615859806200d89683390190565b61490d80620130ef83390190565b60005b838110156200266d57818101518382015260200162002653565b50506000910152565b600081518084526200269081602086016020860162002650565b601f01601f19169290920160200192915050565b82815260406020820152600062000773604083018462002676565b60008282518085526020808601955060208260051b8401016020860160005b848110156200271057601f19868403018952620026fd83835162002676565b98840198925090830190600101620026de565b5090979650505050505050565b60208152600062000c3b6020830184620026bf565b634e487b7160e01b600052603260045260246000fd5b86815285602082015284604082015283606082015260c0608082015260006200277560c0830185620026bf565b82810360a0840152620027898185620026bf565b9998505050505050505050565b60008351620027aa81846020880162002650565b835190830190620027c081836020880162002650565b01949350505050565b60008151808452602080850194506020840160005b83811015620027fc57815187529582019590820190600101620027de565b509495945050505050565b6080815260006200281c6080830187620027c9565b828103602084015262002830818762002676565b905084604084015282810360608401526200284c818562002676565b979650505050505050565b86815260c0602082015260006200287260c0830188620027c9565b828103604084015262002886818862002676565b90508560608401528281036080840152620028a2818662002676565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620005005762000500620028b6565b61ffff60f01b84168152826020820152606060408201526000620010c3606083018462002676565b634e487b7160e01b600052602160045260246000fd5b85815260a0602082015260006200293b60a0830187620027c9565b82810360408401526200294f818762002676565b905084606084015282810360808401526200296b818562002676565b98975050505050505050565b8281526000602080830184516020860160005b82811015620029a8578151845292840192908401906001016200298a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b81810381811115620005005762000500620028b6565b8082028115828204841417620005005762000500620028b6565b60608152600062002a106060830186620027c9565b65ffffffffffff85166020840152828103604084015262002a32818562002676565b9695505050505050565b84815260806020820152600062002a576080830186620027c9565b65ffffffffffff8516604084015282810360608401526200284c818562002676565b60608152600062002a8e606083018662002676565b60208301949094525060400152919050565b60805160a05160c05160e05161010051611acc62002b0f6000396000818161037c015281816105d10152610677015260008181610730015261078101526000818161064b0152610cd10152600081816104970152610ca40152600081816101a001526102560152611acc6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637c015a891161008c578063aa82e01711610066578063aa82e0171461020e578063c2722ecc14610221578063dd62ed3e14610241578063ebd8d4f61461025457600080fd5b80637c015a891461019b57806395d89b41146101f3578063a9059cbb146101fb57600080fd5b806323b872dd116100c857806323b872dd14610146578063313ce567146101595780633dc8ded71461017357806370a082311461018857600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f76102bf565b60405161010491906116f2565b60405180910390f35b61012061011b36600461171c565b6102ce565b6040519015158152602001610104565b6101386102ea565b604051908152602001610104565b610120610154366004611746565b6102f4565b61016161031a565b60405160ff9091168152602001610104565b61018661018136600461171c565b610324565b005b610138610196366004611782565b610332565b6101c27f000000000000000000000000000000000000000000000000000000000000000081565b6040517fffffffffffffffffffffffffffff0000000000000000000000000000000000009091168152602001610104565b6100f761033d565b61012061020936600461171c565b610347565b61018661021c36600461171c565b610355565b61022961035f565b6040516001600160a01b039091168152602001610104565b61013861024f36600461179d565b610369565b7f000000000000000000000000000000000000000000000000000000000000000060101c7dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e7300000000000000000000000000000000000000000000000000000000000017610138565b60606102c9610375565b905090565b6000336102de81858560016103a0565b60019150505b92915050565b60006102c9610490565b6000336103028582856104bb565b61030d858585610534565b60019150505b9392505050565b60006102c96105ca565b61032e82826105f5565b5050565b60006102e482610644565b60606102c9610670565b6000336102de818585610534565b61032e828261069b565b60006102c96106ea565b60006103138383610729565b60606102c97f0000000000000000000000000000000000000000000000000000000000000000610756565b6001600160a01b0384166103e8576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6001600160a01b03831661042b576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b61043684848461077c565b801561048a57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161048191815260200190565b60405180910390a35b50505050565b60006102c97f00000000000000000000000000000000000000000000000000000000000000006107a8565b60006104c78484610729565b9050600019811461048a5781811015610525576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016103df565b61048a848484840360006103a0565b6001600160a01b038316610577576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b6001600160a01b0382166105ba576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b6105c58383836107cd565b505050565b60006102c97f00000000000000000000000000000000000000000000000000000000000000006108f4565b6001600160a01b038216610638576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b61032e600083836107cd565b60006102e47f00000000000000000000000000000000000000000000000000000000000000008361093c565b60606102c97f00000000000000000000000000000000000000000000000000000000000000006109aa565b6001600160a01b0382166106de576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b61032e826000836107cd565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610724573391505090565b919050565b60006103137f000000000000000000000000000000000000000000000000000000000000000084846109c9565b60408051600080825260208201909252606091610774848383610a64565b949350505050565b6105c57f0000000000000000000000000000000000000000000000000000000000000000848484610b2b565b604080516000808252602082019092526000610774848383630100080160dd1b610be2565b6001600160a01b0383166107fb576107f6816107e7610490565b6107f191906117fc565b610c9f565b610869565b600061080684610644565b90508181101561085b576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016103df565b61086784838303610ccc565b505b6001600160a01b03821661088e5761088981610883610490565b03610c9f565b6108a2565b6108a2828261089c85610644565b01610ccc565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108e791815260200190565b60405180910390a3505050565b6040805160008082526020820190925260006109318483837e01010201000000000000000000000000000000000000000000000000000000610be2565b60f81c949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106109815761098161180f565b602090810291909101015260006109a1858383630100080160dd1b610be2565b95945050505050565b6040805160008082526020820190925260609161077484836001610a64565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110610a0e57610a0e61180f565b602002602001018181525050826001600160a01b031660001b81600181518110610a3a57610a3a61180f565b60209081029190910101526000610a5a868383630100080160dd1b610be2565b9695505050505050565b60606000610a706106ea565b9050306001600160a01b03821603610a9557610a8d858585610cf7565b915050610313565b6040517f1e7889770000000000000000000000000000000000000000000000000000000081526001600160a01b03821690631e78897790610ade90889088908890600401611861565b600060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a8d919081019061188d565b509392505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110610b6c57610b6c61180f565b602002602001018181525050826001600160a01b031660001b81600181518110610b9857610b9861180f565b602002602001018181525050610bdb8582600085604051602001610bbe91815260200190565b60408051601f19818403018152919052630100080160dd1b610d31565b5050505050565b600080610bed6106ea565b9050306001600160a01b03821603610c1357610c0b86868686610de7565b915050610774565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610c5e90899089908990899060040161193a565b602060405180830381865afa158015610c7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190611969565b610cc97f000000000000000000000000000000000000000000000000000000000000000082610e14565b50565b61032e7f00000000000000000000000000000000000000000000000000000000000000008383610e3b565b6060610774610d07858585610ea3565b6000610d2c85610d178989610f23565b9060ff166028026038011c64ffffffffff1690565b610f36565b6000610d3b6106ea565b9050306001600160a01b03821603610d5f57610d5a8686868686610f59565b610ddf565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090610dac9089908990899089908990600401611982565b600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b505050505b505050505050565b60006109a1610df68686610f6e565b60ff858116601b0360080285901c16610e0f8587610fc4565b610ff5565b604080516000808252602082018352918101839052906105c5908490839060608201610bbe565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110610e7d57610e7d61180f565b60200260200101818152505061048a8482600085604051602001610bbe91815260200190565b60008383604051602001610eb89291906119c9565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610313610f328484611046565b5490565b60405160208101601f19603f8484010116604052828252610b238585858461109c565b610bdb8585610f688487610fc4565b85611168565b60008282604051602001610f839291906119c9565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610b2357610feb60ff601b83900360080287901c16836117fc565b9150600101610fc9565b60006020821061101b5760208204840193506020828161101757611017611a05565b0691505b508254600882021b602082900380841115610b23576001850154600882021c82179150509392505050565b6000828260405160200161105b9291906119c9565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561112357602083106110c6576020830484019350602083816110c2576110c2611a05565b0692505b82156111235760208390036000818410156110e95750600019600884021c6110f3565b50600019600882021c5b8554600886021b81845116821982161784525081841161111457505061048a565b50600194909401939182900391015b5b602082106111455783548152600190930192601f1990910190602001611124565b811561048a576000600019600884021c8251865482191691161782525050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111f257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111e593929190611a1b565b60405180910390a261048a565b60006111fe8585610f6e565b9050600061120b8661140c565b905060005b81518110156112e057600082828151811061122d5761122d61180f565b602002602001015190506112596004826affffffffffffffffffffff191661149590919063ffffffff16565b156112d7576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112a4908b908b908b908b90600401611a4e565b600060405180830381600087803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b505050505b50600101611210565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161131593929190611a1b565b60405180910390a2611330828565ffffffffffff16856114b3565b60005b81518110156114035760008282815181106113505761135061180f565b6020026020010151905061137c6008826affffffffffffffffffffff191661149590919063ffffffff16565b156113fa576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113c7908b908b908b908b90600401611a4e565b600060405180830381600087803b1580156113e157600080fd5b505af11580156113f5573d6000803e3d6000fd5b505050505b50600101611333565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106114465761144661180f565b6020908102919091010152600061147e7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610cf7565b905061077461149082600084516114c9565b611557565b60008160ff16826114a68560581c90565b1660ff1614905092915050565b6105c5838383516114c48560200190565b611568565b6000818311806114d95750835182115b15611516578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103df93929190611a87565b6020840161152484826117fc565b905060006115328585611aac565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006103138360156000611627565b82156115e257602083106115925760208304840193506020838161158e5761158e611a05565b0692505b82156115e25760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115d357505061048a565b50600194909401939182900391015b5b602082106116045780518455600190930192601f19909101906020016115e3565b811561048a576000600019600884021c8554835182191691161785555050505050565b606060006116358560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161165b5761165b611a05565b04905060405193506020840160208202810160405281855260005b82811015611696578451871c825293870193602090910190600101611676565b50505050509392505050565b60005b838110156116bd5781810151838201526020016116a5565b50506000910152565b600081518084526116de8160208601602086016116a2565b601f01601f19169290920160200192915050565b60208152600061031360208301846116c6565b80356001600160a01b038116811461072457600080fd5b6000806040838503121561172f57600080fd5b61173883611705565b946020939093013593505050565b60008060006060848603121561175b57600080fd5b61176484611705565b925061177260208501611705565b9150604084013590509250925092565b60006020828403121561179457600080fd5b61031382611705565b600080604083850312156117b057600080fd5b6117b983611705565b91506117c760208401611705565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156102e4576102e46117e6565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156118565781518752958201959082019060010161183a565b509495945050505050565b83815260606020820152600061187a6060830185611825565b905060ff83166040830152949350505050565b60006020828403121561189f57600080fd5b815167ffffffffffffffff808211156118b757600080fd5b818401915084601f8301126118cb57600080fd5b8151818111156118dd576118dd6117d0565b604051601f8201601f19908116603f01168101908382118183101715611905576119056117d0565b8160405282815287602084870101111561191e57600080fd5b61192f8360208301602088016116a2565b979650505050505050565b8481526080602082015260006119536080830186611825565b60ff949094166040830152506060015292915050565b60006020828403121561197b57600080fd5b5051919050565b85815260a06020820152600061199b60a0830187611825565b60ff8616604084015282810360608401526119b681866116c6565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156119f8578151845292840192908401906001016119dc565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000611a2e6060830186611825565b65ffffffffffff851660208401528281036040840152610a5a81856116c6565b848152608060208201526000611a676080830186611825565b65ffffffffffff85166040840152828103606084015261192f81856116c6565b606081526000611a9a60608301866116c6565b60208301949094525060400152919050565b818103818111156102e4576102e46117e656fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b60405164191718171960d91b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a23360805260405164191718171960d91b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a26080516152b8620000d46000396000818161036f01526112c801526152b86000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146106f1578063e228a4a314610711578063ef6ea8621461073157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b602082015260006022820181905260308201819052916102189101604051602081830303815290604052610213906143b6565b610751565b60408051616e7360f01b602082015260006022820181905260308201529192506102649101604051602081830303815290604052610255906143b6565b61025f34846143f3565b6107d2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610873565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109439050565b9050600061035333858434610976565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614463565b6109a3565b6040516103a59190614519565b3480156103e757600080fd5b506102646103f636600461456e565b6109e6565b34801561040757600080fd5b5061026461041636600461456e565b610a99565b34801561042757600080fd5b506103ce6104363660046145fb565b610b44565b34801561044757600080fd5b50610264610456366004614659565b610b8e565b34801561046757600080fd5b50610264610476366004614706565b610c77565b34801561048757600080fd5b50610264610496366004614706565b610d2d565b3480156104a757600080fd5b506104bb6104b636600461479c565b610dda565b6040519081526020016103a5565b6103ce6104d736600461486c565b610deb565b3480156104e857600080fd5b506104fc6104f73660046148b3565b610e27565b6040516103a593929190614906565b34801561051757600080fd5b506103ce6105263660046149a6565b610e7c565b34801561053757600080fd5b50610264610546366004614a0f565b610e8b565b34801561055757600080fd5b507f322e302e320000000000000000000000000000000000000000000000000000006104bb565b6103ce61058c366004614a70565b610f00565b34801561059d57600080fd5b506104bb6105ac366004614463565b61105c565b3480156105bd57600080fd5b506104bb6105cc366004614ac9565b61109f565b3480156105dd57600080fd5b506104bb6105ec366004614b28565b6110ad565b3480156105fd57600080fd5b5061026461060c366004614b7f565b6110ba565b34801561061d57600080fd5b5061026461062c366004614bb9565b611136565b34801561063d57600080fd5b5061026461064c366004614c48565b6111e1565b34801561065d57600080fd5b5061026461066c366004614cd5565b61128f565b34801561067d57600080fd5b506104fc61068c366004614a0f565b6113d1565b34801561069d57600080fd5b506103ce6106ac3660046145fb565b611423565b3480156106bd57600080fd5b506104bb6106cc36600461479c565b611464565b3480156106dd57600080fd5b506102646106ec366004614463565b61146f565b3480156106fd57600080fd5b506104bb61070c366004614b28565b6114ef565b34801561071d57600080fd5b506104bb61072c36600461479c565b6114fc565b34801561073d57600080fd5b5061026461074c36600461456e565b611507565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061078a5761078a614cf2565b602090810291909101015260006107ca7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b6115b2565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061080857610808614cf2565b60200260200101818152505061086e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161085191815260200190565b60408051601f19818403018152919052630100080160dd1b6115df565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108cc576108cc614cf2565b6020908102919091010152600080806109257f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115f4565b9250925092506109368383836116fc565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b606060008061098787878787611714565b915091508161099957610999816118e4565b9695505050505050565b6060610999868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118ec9050565b303303610a14576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a1e8633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061197d92505050565b505050505050565b303303610ac7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ad18633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061199892505050565b6060610b85858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119d3915050565b95945050505050565b303303610bbc576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610bc68833611931565b610c6d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611a0d92505050565b5050505050505050565b303303610ca5576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610caf8733611931565b610d248787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611a23915050565b50505050505050565b303303610d5b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d658733611931565b610d248787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115df915050565b6000610de582611a66565b92915050565b6060303303610e1b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61096f33848434610976565b606060006060610e6c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115f4915050565b9250925092509450945094915050565b60606109998686868686611aeb565b303303610eb9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ec38333611931565b61086e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bee92505050565b6060303303610f30576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f5357610f4c33848434610976565b905061096f565b6000610f5f8533611c01565b9050610f6e8186338787611cb2565b15610f8757610f7f85858534610976565b91505061096f565b6000610f94866000611c01565b9050610fa38187338888611cb2565b15610fbd57610fb486868634610976565b9250505061096f565b6000610fef616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d87565b9050610ffe8188338989611cb2565b156110195761100f87878734610976565b935050505061096f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610999868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115b29050565b6000610b8585858585611e00565b60006107ca848484611e48565b3033036110e8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111289101604051602081830303815290604052611122906143b6565b33611e5e565b6111328282611eaf565b5050565b303303611164576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61116e8633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f6292505050565b30330361120f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112198833611931565b610c6d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121fd92505050565b3033036112bd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113615760408051616e7360f01b6020820152600060228201819052603082015261132c9101604051602081830303815290604052611327906143b6565b612215565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d08565b600061136b612352565b6001600160a01b0316146113ab576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113b4816123b9565b6040805160008152602081019091526113ce908290611eaf565b50565b6060600060606114148686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061245492505050565b92509250925093509350939050565b6060610b858585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061247a915050565b6000610de582612490565b30330361149d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114a78533611931565b6114e8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506125049050565b5050505050565b60006107ca84848461255d565b6000610de58261256d565b303303611535576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61153f8633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061259392505050565b6000610b856115c186866125ce565b60ff858116601b0360080285901c166115da8587612624565b61265d565b6114e885856115ee8487612624565b85611f62565b6060600060606000611605856126ae565b90506116128787836126d1565b9350600061161f8661270a565b905080156116f1576116318888612747565b935066ffffffffffffff841667ffffffffffffffff811115611655576116556147b5565b6040519080825280601f01601f19166020018201604052801561167f576020820181803683370190505b5092506020830160005b828160ff1610156116ee5760006116a18b8b8461275a565b905060006116be888460ff166028026038011c64ffffffffff1690565b90506116cd82600083876127da565b6116d781856143f3565b9350505080806116e690614d33565b915050611689565b50505b505093509350939050565b600080611708856128a6565b90969095509350505050565b600060606000611723866128bb565b905060005b81518110156117f657600082828151811061174557611745614cf2565b602002602001015190506117716001826affffffffffffffffffffff191661294490919063ffffffff16565b156117ed576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906117ba908c908c908c90600401614d52565b600060405180830381600087803b1580156117d457600080fd5b505af11580156117e8573d6000803e3d6000fd5b505050505b50600101611728565b5061180387858888612962565b909350915060005b81518110156118d957600082828151811061182857611828614cf2565b602002602001015190506118546002826affffffffffffffffffffff191661294490919063ffffffff16565b156118d0576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f999061189d908c908c908c90600401614d52565b600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050505b5060010161180b565b505094509492505050565b805160208201fd5b60606118f782612a7d565b8360ff1610156119145761190d85858585612a8f565b90506107ca565b61190d858561192285612a7d565b61192c9087614d7a565b6119d3565b61193b8282612abc565b6111325761194882612215565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d08565b6119928484848461198d89611a66565b611a23565b50505050565b60006119a48585612747565b905060006119c1828560ff166028026038011c64ffffffffff1690565b9050610a918686868460008888612aff565b60606107ca6119e385858561275a565b6000611a08856119f38989612747565b9060ff166028026038011c64ffffffffff1690565b612f39565b6114e88585858585611a1e8b611a66565b612f5c565b611a2c81612a7d565b8360ff161015611a4857611a4385858585856115df565b6114e8565b6114e88585611a5684612a7d565b611a609087614d7a565b85612593565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611ab557507e60030220202000000000000000000000000000000000000000000000000000919050565b610de5611ae27f746273746f72650000000000000000005461626c657300000000000000000000846132a1565b6020600061265d565b606081831115611b31576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b3d8787612747565b90506000611b5a828760ff166028026038011c64ffffffffff1690565b90508085101580611b6a57508084115b15611bc5578081861015611b8857611b83600186614d93565b611b8a565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611bd289898961275a565b9050611be18187888803612f39565b9998505050505050505050565b6111328282611bfc85611a66565b6132bd565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c4657611c46614cf2565b602002602001018181525050826001600160a01b031660001b81600181518110611c7257611c72614cf2565b60209081029190910101526000610b857f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b6115b2565b6000611cbd866135bc565b15611cca57506001610b85565b85611cd757506000610b85565b600080611d538660008a8a8989604051602401611cf693929190614d52565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612962565b9150915081611d6757600092505050610b85565b80806020019051810190611d7b9190614da6565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611dc057611dc0614cf2565b602090810291909101015260006107ca7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b6115b2565b600080611e0c83612a7d565b90508060ff168460ff161015611e345760ff848116601b0360080284901c165b9150506107ca565b611e2c8686611e438488614d7a565b61255d565b60006107ca848484611e5988611a66565b611e00565b6001600160a01b038116611e98616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613637565b6001600160a01b0316146111325761194882612215565b611ed9827f6fdd1c80000000000000000000000000000000000000000000000000000000006136d3565b611f4e3360008484604051602401611ef19190614519565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261372e565b50611132828280519060200120600161373f565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fec57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fdf93929190614e04565b60405180910390a2611992565b6000611ff885856125ce565b9050600061200586613823565b905060005b81518110156120da57600082828151811061202757612027614cf2565b602002602001015190506120536004826affffffffffffffffffffff191661294490919063ffffffff16565b156120d1576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061209e908b908b908b908b90600401614e37565b600060405180830381600087803b1580156120b857600080fd5b505af11580156120cc573d6000803e3d6000fd5b505050505b5060010161200a565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161210f93929190614e04565b60405180910390a261212a828565ffffffffffff1685613895565b60005b8151811015610d2457600082828151811061214a5761214a614cf2565b602002602001015190506121766008826affffffffffffffffffffff191661294490919063ffffffff16565b156121f4576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906121c1908b908b908b908b90600401614e37565b600060405180830381600087803b1580156121db57600080fd5b505af11580156121ef573d6000803e3d6000fd5b505050505b5060010161212d565b610a918686868686866122108d8d612747565b612aff565b606081601081901b6000612228836138ab565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156122835761227e7fffffffffffffffffffffffffffff00000000000000000000000000000000000084166138c2565b6122ba565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122f0576122eb836138c2565b612327565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161233993929190614e70565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123af7f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613966565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611132917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e14010014000000000000000000000000000000000000000000000000000000613a1b565b60606000606061246d858561246888611a66565b6115f4565b9250925092509250925092565b60606107ca84848461248b88611a66565b6118ec565b600061249b82613ac4565b90506124a682613b56565b6124ff5781826040516020016124be91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614efe565b919050565b60006125108585612747565b9050600061252d828560ff166028026038011c64ffffffffff1690565b9050610a918686866125468764ffffffffff8716614d93565b604080516000815260208101909152889088612aff565b60006107ca826119f38686612747565b600061257882613bf3565b9050806124ff5781826040516020016124be91815260200190565b600061259f8585612747565b905060006125bc828560ff166028026038011c64ffffffffff1690565b9050610a918686866000858888612aff565b600082826040516020016125e3929190614f17565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126555761264b60ff601b83900360080287901c16836143f3565b9150600101612629565b509392505050565b6000602082106126835760208204840193506020828161267f5761267f614f53565b0691505b508254600882021b602082900380841115612655576001850154600882021c82179150509392505050565b600060086126be60026020614d93565b6126c89190614f69565b9190911c919050565b6060816000036126f0575060408051602081019091526000815261096f565b60006126fc85856125ce565b9050610b8581600085612f39565b6000600860018061271d60026020614d93565b6127279190614d93565b6127319190614d93565b61273b9190614f69565b8260ff911c1692915050565b600061096f6127568484613c85565b5490565b6000838360405160200161276f929190614f17565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561286157602083106128045760208304840193506020838161280057612800614f53565b0692505b82156128615760208390036000818410156128275750600019600884021c612831565b50600019600882021c5b8554600886021b818451168219821617845250818411612852575050611992565b50600194909401939182900391015b5b602082106128835783548152600190930192601f1990910190602001612862565b8115611992576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128f5576128f5614cf2565b6020908102919091010152600061292d7f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119d3565b90506107ca61293f8260008451613cdb565b613d69565b60008160ff16826129558560581c90565b1660ff1614905092915050565b6000606060008061297286613d7a565b90925090506001600160a01b0382166129c3578561298f87612215565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614efe565b806129d2576129d28689611931565b8615612a1e577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612a0b82610751565b9050612a1b8261025f8b846143f3565b50505b6000612a2a8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a6257612a5d88888488613e1e565b612a6e565b612a6e88888488613e96565b90999098509650505050505050565b60006008600161272760026020614d93565b6060610b85612a9e86866125ce565b612aa88486612624565b60ff868116601b0360080286901c16612f39565b6000612aef616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ef7565b8061096f575061096f8383613ef7565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612bbf577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b7d91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f80565b6000612bda828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bf39190614d93565b612bfd91906143f3565b9050808214158015612c1f575081612c158688614fc1565b64ffffffffff1614155b15612c6f576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612cc0576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ccd848984613fc0565b90506000612cda8b613823565b905060005b8151811015612da5576000828281518110612cfc57612cfc614cf2565b60200260200101519050612d286010826affffffffffffffffffffff191661294490919063ffffffff16565b15612d9c57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d699796959493929190614fe6565b600060405180830381600087803b158015612d8357600080fd5b505af1158015612d97573d6000803e3d6000fd5b505050505b50600101612cdf565b5064ffffffffff881660005b8a60ff168160ff161015612de457612dd8878260ff166028026038011c64ffffffffff1690565b90910190600101612db1565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d604051612e1f96959493929190615044565b60405180910390a250828414612e40576000612e3b8c8c613c85565b839055505b6000612e4d8c8c8c61275a565b9050612e61818a64ffffffffff1689613895565b5060005b8151811015612f2b576000828281518110612e8257612e82614cf2565b60200260200101519050612eae6020826affffffffffffffffffffff191661294490919063ffffffff16565b15612f2257606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eef9796959493929190614fe6565b600060405180830381600087803b158015612f0957600080fd5b505af1158015612f1d573d6000803e3d6000fd5b505050505b50600101612e65565b505050505050505050505050565b60405160208101601f19603f8484010116604052828252612655858585846127da565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fe857857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612fdb9493929190615093565b60405180910390a2610a91565b6000612ff387613823565b905060005b81518110156130cc57600082828151811061301557613015614cf2565b602002602001015190506130416001826affffffffffffffffffffff191661294490919063ffffffff16565b156130c3576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613090908c908c908c908c908c908c906004016150d2565b600060405180830381600087803b1580156130aa57600080fd5b505af11580156130be573d6000803e3d6000fd5b505050505b50600101612ff8565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516131039493929190615093565b60405180910390a2600061311788886125ce565b9050600060208701905061312f82600089518461408e565b600061313a8561270a565b11156131be57600061314c8a8a613c85565b878155905060208601915060008060005b6131668861270a565b8160ff1610156131b95761317b8d8d8361275a565b92506131968a8260ff166028026038011c64ffffffffff1690565b91506131a5836000848861408e565b6131af82866143f3565b945060010161315d565b505050505b60005b83518110156132955760008482815181106131de576131de614cf2565b6020026020010151905061320a6002826affffffffffffffffffffff191661294490919063ffffffff16565b1561328c576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613259908e908e908e908e908e908e906004016150d2565b600060405180830381600087803b15801561327357600080fd5b505af1158015613287573d6000803e3d6000fd5b505050505b506001016131c1565b50505050505050505050565b60408051602081018490529081018290526000906060016125e3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361334357827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613336919061512b565b60405180910390a2505050565b600061334e84613823565b905060005b815181101561342157600082828151811061337057613370614cf2565b6020026020010151905061339c6040826affffffffffffffffffffff191661294490919063ffffffff16565b15613418576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133e59089908990899060040161513e565b600060405180830381600087803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b505050505b50600101613353565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613452919061512b565b60405180910390a2600061346685856125ce565b90506134bf816000613477866126ae565b67ffffffffffffffff81111561348f5761348f6147b5565b6040519080825280601f01601f1916602001820160405280156134b9576020820181803683370190505b50613895565b60006134ca8461270a565b11156134eb5760006134dc8686613c85565b90506134e981602061414d565b505b60005b8251811015610a9157600083828151811061350b5761350b614cf2565b602002602001015190506135376080826affffffffffffffffffffff191661294490919063ffffffff16565b156135b3576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613580908a908a908a9060040161513e565b600060405180830381600087803b15801561359a57600080fd5b505af11580156135ae573d6000803e3d6000fd5b505050505b506001016134ee565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261362f906143b6565b909114919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061367057613670614cf2565b602090810291909101015260006136c87f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e140100140000000000000000000000000000000000000000000000000000006115b2565b60601c949350505050565b6136dd828261418a565b611132576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061098787878787613e96565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061378057613780614cf2565b60200260200101818152505082816001815181106137a0576137a0614cf2565b6020026020010181815250506119927f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137ee91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115df565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061385d5761385d614cf2565b6020908102919091010152600061292d7f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119d3565b61086e838383516138a68560200190565b61408e565b60006138b9607060106143f3565b9190911b919050565b606060005b6010811015613927577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613927576001016138c7565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107ca565b6000806139716141a6565b9050306001600160a01b0382160361398f57611e2c868686866115b2565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139da908990899089908990600401615167565b602060405180830381865afa1580156139f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2c9190615196565b6000613a256141a6565b9050306001600160a01b03821603613a4957613a4486868686866115df565b610a91565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a9690899089908990899089906004016151af565b600060405180830381600087803b158015613ab057600080fd5b505af1158015613295573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613afd57613afd614cf2565b602090810291909101015260006107ca7f746273746f72650000000000000000005461626c6573000000000000000000008360017e600302202020000000000000000000000000000000000000000000000000006115b2565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b8f57613b8f614cf2565b60209081029190910101526000613be77f746273746f72650000000000000000005265736f75726365496473000000000083837e010100010000000000000000000000000000000000000000000000000000006115b2565b90506107ca8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c2c57613c2c614cf2565b602090810291909101015260006107ca7f746273746f72650000000000000000005461626c6573000000000000000000008360027e600302202020000000000000000000000000000000000000000000000000006115b2565b60008282604051602001613c9a929190614f17565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613ceb5750835182115b15613d28578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151f6565b60208401613d3684826143f3565b90506000613d448585614d93565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061096f83601560006141e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613db457613db4614cf2565b602090810291909101015260008080613e0d7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115f4565b92509250925061093683838361425b565b60006060836001600160a01b03166000613e39858989614267565b604051613e46919061521b565b60006040518083038185875af1925050503d8060008114613e83576040519150601f19603f3d011682016040523d82523d6000602084013e613e88565b606091505b509097909650945050505050565b60006060836001600160a01b0316613eaf848888614267565b604051613ebc919061521b565b600060405180830381855af49150503d8060008114613e83576040519150601f19603f3d011682016040523d82523d6000602084013e613e88565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f3057613f30614cf2565b602002602001018181525050826001600160a01b031660001b81600181518110613f5c57613f5c614cf2565b60209081029190910101526000613fb47f7462776f726c640000000000000000005265736f75726365416363657373000083837e010100010000000000000000000000000000000000000000000000000000006115b2565b9050610b858160f81c90565b600064ffffffffff821115614004576040517f7149a3c100000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614036578085038201915061403e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561410857602083106140b8576020830484019350602083816140b4576140b4614f53565b0692505b82156141085760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140f9575050611992565b50600194909401939182900391015b5b6020821061412a5780518455600190930192601f1990910190602001614109565b8115611992576000600019600884021c8554835182191691161785555050505050565b6000602061415c83601f6143f3565b6141669190615237565b61417090846143f3565b90505b8083101561086e5760008355600183019250614173565b600061419583614296565b801561096f575061096f83836142e2565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124ff573391505090565b606060006141ee8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161421457614214614f53565b04905060405193506020840160208202810160405281855260005b8281101561424f578451871c82529387019360209091019060010161422f565b50505050509392505050565b6000806117088561439a565b606083838360405160200161427e93929190615259565b60405160208183030381529060405290509392505050565b60006142c2827f01ffc9a7000000000000000000000000000000000000000000000000000000006142e2565b8015610de557506142db826001600160e01b03196142e2565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614383575060208210155b801561438f5750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c6128b4565b805160208083015191908110156143d7576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610de557610de56143dd565b60008083601f84011261441857600080fd5b50813567ffffffffffffffff81111561443057600080fd5b6020830191508360208260051b850101111561444b57600080fd5b9250929050565b803560ff811681146124ff57600080fd5b60008060008060006080868803121561447b57600080fd5b85359450602086013567ffffffffffffffff81111561449957600080fd5b6144a588828901614406565b90955093506144b8905060408701614452565b949793965091946060013592915050565b60005b838110156144e45781810151838201526020016144cc565b50506000910152565b600081518084526145058160208601602086016144c9565b601f01601f19169290920160200192915050565b60208152600061096f60208301846144ed565b60008083601f84011261453e57600080fd5b50813567ffffffffffffffff81111561455657600080fd5b60208301915083602082850101111561444b57600080fd5b6000806000806000806080878903121561458757600080fd5b86359550602087013567ffffffffffffffff808211156145a657600080fd5b6145b28a838b01614406565b90975095508591506145c660408a01614452565b945060608901359150808211156145dc57600080fd5b506145e989828a0161452c565b979a9699509497509295939492505050565b6000806000806060858703121561461157600080fd5b84359350602085013567ffffffffffffffff81111561462f57600080fd5b61463b87828801614406565b909450925061464e905060408601614452565b905092959194509250565b60008060008060008060008060a0898b03121561467557600080fd5b88359750602089013567ffffffffffffffff8082111561469457600080fd5b6146a08c838d01614406565b909950975060408b01359150808211156146b957600080fd5b6146c58c838d0161452c565b909750955060608b0135945060808b01359150808211156146e557600080fd5b506146f28b828c0161452c565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561472157600080fd5b87359650602088013567ffffffffffffffff8082111561474057600080fd5b61474c8b838c01614406565b909850965086915061476060408b01614452565b955060608a013591508082111561477657600080fd5b506147838a828b0161452c565b989b979a50959894979596608090950135949350505050565b6000602082840312156147ae57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147f4576147f46147b5565b604052919050565b600082601f83011261480d57600080fd5b813567ffffffffffffffff811115614827576148276147b5565b61483a6020601f19601f840116016147cb565b81815284602083860101111561484f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561487f57600080fd5b82359150602083013567ffffffffffffffff81111561489d57600080fd5b6148a9858286016147fc565b9150509250929050565b600080600080606085870312156148c957600080fd5b84359350602085013567ffffffffffffffff8111156148e757600080fd5b6148f387828801614406565b9598909750949560400135949350505050565b60608152600061491960608301866144ed565b846020840152828103604084015261099981856144ed565b600082601f83011261494257600080fd5b8135602067ffffffffffffffff82111561495e5761495e6147b5565b8160051b61496d8282016147cb565b928352848101820192828101908785111561498757600080fd5b83870192505b8483101561438f5782358252918301919083019061498d565b600080600080600060a086880312156149be57600080fd5b85359450602086013567ffffffffffffffff8111156149dc57600080fd5b6149e888828901614931565b9450506149f760408701614452565b94979396509394606081013594506080013592915050565b600080600060408486031215614a2457600080fd5b83359250602084013567ffffffffffffffff811115614a4257600080fd5b614a4e86828701614406565b9497909650939450505050565b6001600160a01b03811681146113ce57600080fd5b600080600060608486031215614a8557600080fd5b8335614a9081614a5b565b925060208401359150604084013567ffffffffffffffff811115614ab357600080fd5b614abf868287016147fc565b9150509250925092565b60008060008060808587031215614adf57600080fd5b84359350602085013567ffffffffffffffff811115614afd57600080fd5b614b0987828801614931565b935050614b1860408601614452565b9396929550929360600135925050565b600080600060608486031215614b3d57600080fd5b83359250602084013567ffffffffffffffff811115614b5b57600080fd5b614b6786828701614931565b925050614b7660408501614452565b90509250925092565b60008060408385031215614b9257600080fd5b8235614b9d81614a5b565b9150602083013567ffffffffffffffff81111561489d57600080fd5b60008060008060008060808789031215614bd257600080fd5b86359550602087013567ffffffffffffffff80821115614bf157600080fd5b614bfd8a838b01614406565b90975095506040890135915065ffffffffffff82168214614c1d57600080fd5b909350606088013590808211156145dc57600080fd5b803564ffffffffff811681146124ff57600080fd5b60008060008060008060008060c0898b031215614c6457600080fd5b88359750602089013567ffffffffffffffff80821115614c8357600080fd5b614c8f8c838d01614406565b9099509750879150614ca360408c01614452565b9650614cb160608c01614c33565b9550614cbf60808c01614c33565b945060a08b01359150808211156146e557600080fd5b600060208284031215614ce757600080fd5b813561096f81614a5b565b634e487b7160e01b600052603260045260246000fd5b604081526000614d1b60408301856144ed565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d4957614d496143dd565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b8560608301846144ed565b60ff8281168282160390811115610de557610de56143dd565b81810381811115610de557610de56143dd565b600060208284031215614db857600080fd5b8151801515811461096f57600080fd5b60008151808452602080850194506020840160005b83811015614df957815187529582019590820190600101614ddd565b509495945050505050565b606081526000614e176060830186614dc8565b65ffffffffffff85166020840152828103604084015261099981856144ed565b848152608060208201526000614e506080830186614dc8565b65ffffffffffff85166040840152828103606084015261438f81856144ed565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ed18160038601602089016144c9565b808401905081600382015284519150614ef18260048301602088016144c9565b0160040195945050505050565b8281526040602082015260006107ca60408301846144ed565b8281526000602080830184516020860160005b82811015614f4657815184529284019290840190600101614f2a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610de557610de56143dd565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b8560608301846144ed565b64ffffffffff818116838216019080821115614fdf57614fdf6143dd565b5092915050565b87815260e060208201526000614fff60e0830189614dc8565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261503681856144ed565b9a9950505050505050505050565b60c08152600061505760c0830189614dc8565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a0840152611be181856144ed565b6080815260006150a66080830187614dc8565b82810360208401526150b881876144ed565b9050846040840152828103606084015261438f81856144ed565b86815260c0602082015260006150eb60c0830188614dc8565b82810360408401526150fd81886144ed565b9050856060840152828103608084015261511781866144ed565b9150508260a0830152979650505050505050565b60208152600061096f6020830184614dc8565b8381526060602082015260006151576060830185614dc8565b9050826040830152949350505050565b8481526080602082015260006151806080830186614dc8565b60ff949094166040830152506060015292915050565b6000602082840312156151a857600080fd5b5051919050565b85815260a0602082015260006151c860a0830187614dc8565b60ff8616604084015282810360608401526151e381866144ed565b9150508260808301529695505050505050565b60608152600061520960608301866144ed565b60208301949094525060400152919050565b6000825161522d8184602087016144c9565b9190910192915050565b60008261525457634e487b7160e01b600052601260045260246000fd5b500490565b6000845161526b8184602089016144c9565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615828620000316000396000610bdb01526158286000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636548a90a116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b80636548a90a146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c75565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614cb4565b61032c565b005b610176610186366004614d30565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614e7d565b61042d565b6101d16101cc366004614ed6565b61044d565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614f1d565b6105a3565b604051601f19360135815260200161015a565b61017661021e366004614f75565b61071e565b6101d1610231366004614fb3565b61078a565b610176610244366004615016565b610865565b610176610257366004614cb4565b610927565b61017661026a366004615050565b610966565b61017661027d366004615050565b610998565b610176610290366004615069565b610a2d565b6101766102a33660046150a3565b610aed565b6101766102b6366004614f75565b610b06565b610193610bc7565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bd1565b6103458261034061041e565b610c35565b61034f8282610cae565b5050565b61035b610bd1565b600061036689610cd9565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610cf0565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615110565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e04565b6103f48861034061041e565b61041488888888610405888a615129565b61040f8789615129565b610e4f565b5050505050505050565b60006104286112b0565b905090565b610435610bd1565b61044861044061041e565b8484846112e2565b505050565b6000610457610bd1565b61737960f01b836001600160f01b031916146104b25761737960f01b8361047d85610cf0565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc939291906151af565b6104bb83610e04565b6104c78361034061041e565b60006104f06104d68560101b90565b71ffffffffffffffffffffffffffffffffffff191661133f565b9050600081846040516020016105079291906151d8565b604051602081830303815290604052905080805190602001209250600061052d846113c9565b90508015610573576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b84516020860120610585858883611479565b61058f8187611544565b6105998584611544565b5050505092915050565b6105ab610bd1565b61737960f01b836001600160f01b031916146105d15761737960f01b8361047d85610cf0565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b176105f581610e04565b6106018161034061041e565b61062b837fb5dee1270000000000000000000000000000000000000000000000000000000061160d565b600061063685610cd9565b6fffffffffffffffffffffffffffffffff191603610658578361038885610cf0565b600061066384611668565b905080158015906106745750848114155b156106b6576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b60006106c1866116ed565b90506001600160a01b038116156106ea576106db81611789565b6106e58382611808565b6106f5565b6106f58660016118a6565b610700868686611947565b61070a85876119ea565b61071683866001611a92565b505050505050565b610726610bd1565b610750827f1873396a0000000000000000000000000000000000000000000000000000000061160d565b610773616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e04565b61077f8361034061041e565b610448838383611b41565b6000610794610bd1565b60408051616e7360f01b602082015260006022820181905260308201526107d691016040516020818303038152906040526107ce90615230565b61034061041e565b8280519060200120905060008280519060200120905060006107f7836113c9565b9050801561083d576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319841660048201526024016103bc565b610848838784611479565b6108528285611544565b61085c8386611544565b50509392505050565b61086d610bd1565b610897827f6fdd1c800000000000000000000000000000000000000000000000000000000061160d565b6109136108a261041e565b600084846040516024016108b69190615254565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c04565b5061034f8282805190602001206001611c31565b61092f610bd1565b61093b8261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611ce0565b61096e610bd1565b61097781611df3565b61098081610e04565b61098c8161034061041e565b61099581611e24565b50565b6109a0610bd1565b6109a981611df3565b6109b281611e8f565b6109bb81612081565b156109fe57806109ca82610cf0565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615110565b610a098160016118a6565b610a1a81610a1561041e565b612106565b61099581610a2661041e565b6001611a92565b610a35610bd1565b610a3e83611df3565b610a47826121d0565b610a7d576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a898361034061041e565b6000610a94836116ed565b9050610ac0817f1a86b5500000000000000000000000000000000000000000000000000000000061160d565b610aca84846121ec565b815115610ae757610ae5610adc61041e565b8484600061226b565b505b50505050565b610af5610bd1565b610995610b0061041e565b8261227c565b610b0e610bd1565b61737960f01b836001600160f01b03191614610b345761737960f01b8361047d85610cf0565b610b5e827f540fbfa80000000000000000000000000000000000000000000000000000000061160d565b610b6783610e04565b610b8a616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e04565b610b968361034061041e565b610448836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761231e565b60006104286123c3565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c33576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c62616e7360f01b6dffffffffffffffffffffffffffff60801b8516176123cd565b6001600160a01b03161461034f57610c7982610cf0565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc929190615267565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611ce0565b6000610ce7607060106152a8565b9190911b919050565b606081601081901b6000610d0383610cd9565b90508271ffffffffffffffffffffffffffffffffffff19831615610d4457610d3f71ffffffffffffffffffffffffffffffffffff19841661133f565b610d7b565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610da257610d9d8361133f565b610dd9565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610deb939291906152bb565b6040516020818303038152906040529350505050919050565b610e0d81612081565b6109955780610e1b82610cf0565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615110565b613a3160f11b866001600160f01b03191614801590610e7d5750611bdd60f21b866001600160f01b03191614155b15610ede57613a3160f11b8687604051602001610e9c91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc9392916004016151af565b610ee78561245e565b610ef28460016126a5565b610efd8360006126a5565b60e084901c60e885901c0160ff16825114610f5d5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fbd5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110355760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61103e85612841565b61104784612841565b146110995761105585612841565b61105e84612841565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110a285612873565b6110ab84612873565b146110fd576110b985612873565b6110c284612873565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61110986612841565b8110156111a45761113361111d8583612890565b60c581111561112e5761112e615331565b6128b8565b6008601b8390030287901c60ff161461119c576008601b8290030286901c60ff1661116161111d8684612890565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b600101611100565b5060006111ce613a3160f11b6111ba8960101b90565b60101c6001600160f01b0319919091161790565b905060006111e5611bdd60f21b6111ba8a60101b90565b90506111f082612081565b806111ff57506111ff81612081565b1561125957878860405160200161121891815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615110565b6112a588888888886040516020016112719190615347565b604051602081830303815290604052886040516020016112919190615347565b604051602081830303815290604052612918565b6104148860016118a6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112df5750335b90565b6112ed8484846129df565b6112f6826121d0565b15610ae7576000611306836116ed565b9050611332817f1a86b5500000000000000000000000000000000000000000000000000000000061160d565b610716858484600061226b565b606060005b6010811015611395576fffffffffffffffffffffffffffffffff198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561139557600101611344565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611421576114216153c9565b602090810291909101015260006113c17f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a95565b60006114858383612acb565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106114e3576114e36153c9565b602090810291909101015261153b7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612b0a565b50505050505050565b6060600061155183612e10565b9050600061155e84612e20565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b7576115b76153c9565b60209081029190910101526107167f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612b0a565b6116178282612e49565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106116ad576116ad6153c9565b602090810291909101015260006113c17f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a95565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611726576117266153c9565b6020908102919091010152600061177e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a95565b60601c949350505050565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106117cb576117cb6153c9565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b612e65565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061183d5761183d6153c9565b602002602001018181525050816001600160a01b031660001b81600181518110611869576118696153c9565b60209081029190910101526104487f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b612e65565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106118dc576118dc6153c9565b6020026020010181815250506104487f746273746f72650000000000000000005265736f75726365496473000000000060001b8260008560405160200161192a91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b613131565b60006119538383613146565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611992576119926153c9565b602090810291909101015261153b7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612b0a565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611a2c57611a2c6153c9565b6020026020010181815250506104487f7462776f726c6400000000000000000053797374656d5265676973747279000060001b82600085604051602001611a7591815260200190565b60408051601f19818403018152919052630100080160dd1b613131565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611ac757611ac76153c9565b602002602001018181525050826001600160a01b031660001b81600181518110611af357611af36153c9565b602002602001018181525050610ae77f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161192a91151560f81b815260010190565b613a3160f11b836001600160f01b03191614611b7157613a3160f11b8384604051602001610e9c91815260200190565b611b7a83612081565b611bd3578283604051602001611b9291815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615110565b610448836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613176565b6060600080611c158787878761321b565b9150915081611c2757611c2781613293565b9695505050505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611c7257611c726153c9565b6020026020010181815250508281600181518110611c9257611c926153c9565b602002602001018181525050610ae77f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b8260008560405160200161192a91151560f81b815260010190565b6000611cec848461329b565b90506000815167ffffffffffffffff811115611d0a57611d0a614dc6565b604051908082528060200260200182016040528015611d33578160200160208202803683370190505b5090506000805b8351811015611de457846001600160a01b0316611d7e858381518110611d6257611d626153c9565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611ddc57838181518110611d9e57611d9e6153c9565b6020026020010151838381518110611db857611db86153c9565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d3a565b50808252610716868684613306565b616e7360f01b6dffffffffffffffffffffffffffff60801b821617811461099557616e7360f01b8161047d83610cf0565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611e5a57611e5a6153c9565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261335d565b6000611e9b8260101b90565b90506000611ebd71ffffffffffffffffffffffffffffffffffff19831661133f565b80519091508015610ae757611edf82611ed76001846153df565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611f70576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611f7e6001836153df565b811015610ae557602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561202b5750611fe683611ed78360016152a8565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b15612079576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611f73565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106120ba576120ba6153c9565b602090810291909101015260006120fa7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a95565b90506113c18160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061213c5761213c6153c9565b6020026020010181815250506104487f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b8260008560405160200161219b919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000613131565b6000811515801561032657506121e5826133f8565b1592915050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612222576122226153c9565b6020026020010181815250506104487f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b82600085604051602001611a7591815260200190565b6060600080611c1587878787613458565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122bd576122bd6153c9565b602002602001018181525050816001600160a01b031660001b816001815181106122e9576122e96153c9565b60209081029190910101526104487f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261335d565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612354576123546153c9565b6020026020010181815250506104487f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123af91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613628565b60006104286136d9565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110612406576124066153c9565b6020908102919091010152600061177e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a95565b80612495576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124a082612873565b905060058111156124e7576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b60006124f283612841565b9050600061250083836152a8565b9050601c811115612547576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156125f25760ff601b82900360080287901c16600081900361259f576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b60208111156125dd576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6125e781846152a8565b92505060010161254b565b506125fc85613718565b81146126485761260b85613718565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107165760ff601b82900360080287901c16801561269c576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161264a565b801580156126b1575081155b156126d25760405163d498615960e01b8152600060048201526024016103bc565b60006126dd83612873565b905060058111156127045760405163d498615960e01b8152600481018290526024016103bc565b600061270f84612841565b9050600061271d83836152a8565b9050601c8111156127445760405163d498615960e01b8152600481018290526024016103bc565b6000805b838110156127b057600061275f61111d8984612890565b90508060000361279b576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127a581846152a8565b925050600101612748565b506127ba86613718565b81146127e5576127c986613718565b60405163d498615960e01b81526004016103bc91815260200190565b825b8281101561153b5760006127fe61111d8984612890565b90508015612838576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016127e7565b600060086001612853600260206153df565b61285d91906153df565b61286791906153f2565b8260ff911c1692915050565b60006008600180612886600260206153df565b61285391906153df565b6000601b8290036008028360ff911c1660c58111156128b1576128b1615331565b9392505050565b6000808260c58111156128cd576128cd615331565b60ff16905060618110156128e757601f1660010192915050565b60618360c58111156128fb576128fb615331565b036129095750601492915050565b50600092915050565b50919050565b600061292586868661373b565b905060006129338484613771565b90506000612941858561378e565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061297b5761297b6153c9565b60209081029190910101526129d37f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612b0a565b50505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110612a2057612a206153c9565b602002602001018181525050826001600160a01b031660001b81600181518110612a4c57612a4c6153c9565b602002602001018181525050610ae77f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b82600085604051602001611a7591815260200190565b6000612ac2612aa486866137a3565b60ff858116601b0360080285901c16612abd85876137f9565b613832565b95945050505050565b60608282604051602001612af39291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b6357857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b569493929190615445565b60405180910390a2610716565b6000612b6e87613883565b905060005b8151811015612c47576000828281518110612b9057612b906153c9565b60200260200101519050612bbc6001826affffffffffffffffffffff191661390790919063ffffffff16565b15612c3e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612c0b908c908c908c908c908c908c90600401615484565b600060405180830381600087803b158015612c2557600080fd5b505af1158015612c39573d6000803e3d6000fd5b505050505b50600101612b73565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c7e9493929190615445565b60405180910390a26000612c9288886137a3565b90506000602087019050612caa826000895184613925565b6000612cb585612873565b1115612d39576000612cc78a8a6139e4565b878155905060208601915060008060005b612ce188612873565b8160ff161015612d3457612cf68d8d83613a3a565b9250612d118a8260ff166028026038011c64ffffffffff1690565b9150612d208360008488613925565b612d2a82866152a8565b9450600101612cd8565b505050505b60005b83518110156129d3576000848281518110612d5957612d596153c9565b60200260200101519050612d856002826affffffffffffffffffffff191661390790919063ffffffff16565b15612e07576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dd4908e908e908e908e908e908e90600401615484565b600060405180830381600087803b158015612dee57600080fd5b505af1158015612e02573d6000803e3d6000fd5b505050505b50600101612d3c565b60006103268251603881901b1790565b606081604051602001612e3391906154dd565b6040516020818303038152906040529050919050565b6000612e5483613aba565b80156128b157506128b18383613afb565b611bdd60f21b836001600160f01b03191603612eb857827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612eab91906154f9565b60405180910390a2505050565b6000612ec384613883565b905060005b8151811015612f96576000828281518110612ee557612ee56153c9565b60200260200101519050612f116040826affffffffffffffffffffff191661390790919063ffffffff16565b15612f8d576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f5a9089908990899060040161550c565b600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b505050505b50600101612ec8565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fc791906154f9565b60405180910390a26000612fdb85856137a3565b9050613034816000612fec86613718565b67ffffffffffffffff81111561300457613004614dc6565b6040519080825280601f01601f19166020018201604052801561302e576020820181803683370190505b50613bb3565b600061303f84612873565b111561306057600061305186866139e4565b905061305e816020613bc9565b505b60005b8251811015610716576000838281518110613080576130806153c9565b602002602001015190506130ac6080826affffffffffffffffffffff191661390790919063ffffffff16565b15613128576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130f5908a908a908a9060040161550c565b600060405180830381600087803b15801561310f57600080fd5b505af1158015613123573d6000803e3d6000fd5b505050505b50600101613063565b610ae5858561314084876137f9565b85613c06565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612af3565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106131ac576131ac6153c9565b6020026020010181815250506104487f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b8260008560405160200161320791906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613e6e565b60006060836001600160a01b03166000613236858989613ea9565b60405161324391906154dd565b60006040518083038185875af1925050503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b606091505b509097909650945050505050565b805160208201fd5b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106132d5576132d56153c9565b60200260200101818152505060006132ef85836000613ec0565b9050612ac26133018260008451613efa565b613f88565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061333c5761333c6153c9565b602002602001018181525050610ae78482600061335886613f99565b613fa9565b60006133676136d9565b9050306001600160a01b03821603613383576104488383613fe4565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906133ca9086908690600401615535565b600060405180830381600087803b1580156133e457600080fd5b505af115801561153b573d6000803e3d6000fd5b6040805161737960f01b60208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261345090615230565b909114919050565b60006060600061346786613ff7565b905060005b815181101561353a576000828281518110613489576134896153c9565b602002602001015190506134b56001826affffffffffffffffffffff191661390790919063ffffffff16565b15613531576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906134fe908c908c908c9060040161554e565b600060405180830381600087803b15801561351857600080fd5b505af115801561352c573d6000803e3d6000fd5b505050505b5060010161346c565b5061354787858888614069565b909350915060005b815181101561361d57600082828151811061356c5761356c6153c9565b602002602001015190506135986002826affffffffffffffffffffff191661390790919063ffffffff16565b15613614576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906135e1908c908c908c9060040161554e565b600060405180830381600087803b1580156135fb57600080fd5b505af115801561360f573d6000803e3d6000fd5b505050505b5060010161354f565b505094509492505050565b60006136326136d9565b9050306001600160a01b038216036136555761365085858585613e6e565b610ae5565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f3262906136a0908890889088908890600401615576565b600060405180830381600087803b1580156136ba57600080fd5b505af11580156136ce573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613713573391505090565b919050565b60006008613728600260206153df565b61373291906153f2565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b1565b60608282604051602001612af39291906155aa565b600082826040516020016137b89291906155d9565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561382a5761382060ff601b83900360080287901c16836152a8565b91506001016137fe565b509392505050565b6000602082106138585760208204840193506020828161385457613854615615565b0691505b508254600882021b60208290038084111561382a576001850154600882021c82179150509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106138bd576138bd6153c9565b602090810291909101015260006138f57f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613ec0565b90506113c16133018260008451613efa565b60008160ff16826139188560581c90565b1660ff1614905092915050565b821561399f576020831061394f5760208304840193506020838161394b5761394b615615565b0692505b821561399f5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613990575050610ae7565b50600194909401939182900391015b5b602082106139c15780518455600190930192601f19909101906020016139a0565b8115610ae7576000600019600884021c8554835182191691161785555050505050565b600082826040516020016139f99291906155d9565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613a4f9291906155d9565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613ae6827f01ffc9a700000000000000000000000000000000000000000000000000000000613afb565b801561032657506121e5826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b9c575060208210155b8015613ba85750600081115b979650505050505050565b61044883838351613bc48560200190565b613925565b60006020613bd883601f6152a8565b613be2919061562b565b613bec90846152a8565b90505b808310156104485760008355600183019250613bef565b611bdd60f21b846001600160f01b03191603613c5d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051613c509392919061564d565b60405180910390a2610ae7565b6000613c6985856137a3565b90506000613c7686613883565b905060005b8151811015613d4b576000828281518110613c9857613c986153c9565b60200260200101519050613cc46004826affffffffffffffffffffff191661390790919063ffffffff16565b15613d42576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613d0f908b908b908b908b90600401615680565b600060405180830381600087803b158015613d2957600080fd5b505af1158015613d3d573d6000803e3d6000fd5b505050505b50600101613c7b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051613d809392919061564d565b60405180910390a2613d9b828565ffffffffffff1685613bb3565b60005b815181101561153b576000828281518110613dbb57613dbb6153c9565b60200260200101519050613de76008826affffffffffffffffffffff191661390790919063ffffffff16565b15613e65576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613e32908b908b908b908b90600401615680565b600060405180830381600087803b158015613e4c57600080fd5b505af1158015613e60573d6000803e3d6000fd5b505050505b50600101613d9e565b6000613e7a858561413b565b90506000613e97828560ff166028026038011c64ffffffffff1690565b9050610716868686846000888861414e565b6060838383604051602001613759939291906156b9565b60606113c1613ed0858585613a3a565b6000613ef585613ee0898961413b565b9060ff166028026038011c64ffffffffff1690565b6144f8565b600081831180613f0a5750835182115b15613f47578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc939291906156f8565b60208401613f5584826152a8565b90506000613f6385856153df565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b1836015600061451b565b6060816128b18160156000614596565b6000613fb5858561413b565b90506000613fd2828560ff166028026038011c64ffffffffff1690565b9050610716868686600085888861414e565b61034f8282613ff2856145ea565b612e65565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110614031576140316153c9565b602090810291909101015260006138f57f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613ec0565b600060606000806140798661466f565b90925090506001600160a01b0382166140965785610e1b87610cf0565b806140a5576140a58689614727565b86156140e9576dffffffffffffffffffffffffffff60801b8616616e7360f01b1760006140d18261473e565b90506140e6826140e18b846152a8565b6147b7565b50505b60006140f58760101b90565b71ffffffffffffffffffffffffffffffffffff1916146141205761411b8888848861321b565b61412c565b61412c88888488614836565b90999098509650505050505050565b60006128b161414a84846139e4565b5490565b613a3160f11b876001600160f01b0319161461417e57613a3160f11b8788604051602001610e9c91815260200190565b6000614199828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836141b291906153df565b6141bc91906152a8565b90508082141580156141de5750816141d4868861571d565b64ffffffffff1614155b1561422e576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561427f576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061428c848984614897565b905060006142998b613883565b905060005b81518110156143645760008282815181106142bb576142bb6153c9565b602002602001015190506142e76010826affffffffffffffffffffff191661390790919063ffffffff16565b1561435b57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016143289796959493929190615742565b600060405180830381600087803b15801561434257600080fd5b505af1158015614356573d6000803e3d6000fd5b505050505b5060010161429e565b5064ffffffffff881660005b8a60ff168160ff1610156143a357614397878260ff166028026038011c64ffffffffff1690565b90910190600101614370565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d6040516143de969594939291906157a0565b60405180910390a2508284146143ff5760006143fa8c8c6139e4565b839055505b600061440c8c8c8c613a3a565b9050614420818a64ffffffffff1689613bb3565b5060005b81518110156144ea576000828281518110614441576144416153c9565b6020026020010151905061446d6020826affffffffffffffffffffff191661390790919063ffffffff16565b156144e157606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016144ae9796959493929190615742565b600060405180830381600087803b1580156144c857600080fd5b505af11580156144dc573d6000803e3d6000fd5b505050505b50600101614424565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261382a85858584614965565b606060006145298560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161454f5761454f615615565b04905060405193506020840160208202810160405281855260005b8281101561458a578451871c82529387019360209091019060010161456a565b50505050509392505050565b825160609060006145a785836153f2565b9050604051925060208301601f19603f83860101166040528184526000602088015b8482101561458a578051871b835291870191600191909101906020016145c9565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161463957507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266146667f746273746f72650000000000000000005461626c65730000000000000000000084614a31565b60206000613832565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106146a9576146a96153c9565b6020908102919091010152600080806147027f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000614a4d565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6147318282614b55565b61034f57610c7982610cf0565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614777576147776153c9565b602090810291909101015260006113c17f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a95565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106147ed576147ed6153c9565b6020026020010181815250506104487f7462776f726c6400000000000000000042616c616e636573000000000000000060001b82600085604051602001611a7591815260200190565b60006060836001600160a01b031661484f848888613ea9565b60405161485c91906154dd565b600060405180830381855af49150503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b600064ffffffffff8211156148db576040517f7149a3c1000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061490d5780850382019150614915565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156149ec576020831061498f5760208304840193506020838161498b5761498b615615565b0692505b82156149ec5760208390036000818410156149b25750600019600884021c6149bc565b50600019600882021c5b8554600886021b8184511682198216178452508184116149dd575050610ae7565b50600194909401939182900391015b5b60208210614a0e5783548152600190930192601f19909101906020016149ed565b8115610ae7576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016137b8565b6060600060606000614a5e85613718565b9050614a6b878783614b8b565b93506000614a7886612873565b90508015614b4a57614a8a888861413b565b935066ffffffffffffff841667ffffffffffffffff811115614aae57614aae614dc6565b6040519080825280601f01601f191660200182016040528015614ad8576020820181803683370190505b5092506020830160005b828160ff161015614b47576000614afa8b8b84613a3a565b90506000614b17888460ff166028026038011c64ffffffffff1690565b9050614b268260008387614965565b614b3081856152a8565b935050508080614b3f906157fc565b915050614ae2565b50505b505093509350939050565b6000614b7b616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614bc4565b806128b157506128b18383614bc4565b606081600003614baa57506040805160208101909152600081526128b1565b6000614bb685856137a3565b9050612ac2816000856144f8565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614bfd57614bfd6153c9565b602002602001018181525050826001600160a01b031660001b81600181518110614c2957614c296153c9565b60209081029190910101526000614c697f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a95565b9050612ac28160f81c90565b600060208284031215614c8757600080fd5b81356001600160e01b0319811681146128b157600080fd5b6001600160a01b038116811461099557600080fd5b60008060408385031215614cc757600080fd5b823591506020830135614cd981614c9f565b809150509250929050565b60008083601f840112614cf657600080fd5b50813567ffffffffffffffff811115614d0e57600080fd5b6020830191508360208260051b8501011115614d2957600080fd5b9250929050565b60008060008060008060008060c0898b031215614d4c57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614d8057600080fd5b614d8c8c838d01614ce4565b909650945060a08b0135915080821115614da557600080fd5b50614db28b828c01614ce4565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614e0557614e05614dc6565b604052919050565b600082601f830112614e1e57600080fd5b813567ffffffffffffffff811115614e3857614e38614dc6565b614e4b6020601f19601f84011601614ddc565b818152846020838601011115614e6057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e9257600080fd5b8335614e9d81614c9f565b925060208401359150604084013567ffffffffffffffff811115614ec057600080fd5b614ecc86828701614e0d565b9150509250925092565b60008060408385031215614ee957600080fd5b82359150602083013567ffffffffffffffff811115614f0757600080fd5b614f1385828601614e0d565b9150509250929050565b600080600060608486031215614f3257600080fd5b833592506020840135614f4481614c9f565b915060408401358015158114614f5957600080fd5b809150509250925092565b803560ff8116811461371357600080fd5b600080600060608486031215614f8a57600080fd5b833592506020840135614f9c81614c9f565b9150614faa60408501614f64565b90509250925092565b600080600060608486031215614fc857600080fd5b83359250602084013567ffffffffffffffff80821115614fe757600080fd5b614ff387838801614e0d565b9350604086013591508082111561500957600080fd5b50614ecc86828701614e0d565b6000806040838503121561502957600080fd5b823561503481614c9f565b9150602083013567ffffffffffffffff811115614f0757600080fd5b60006020828403121561506257600080fd5b5035919050565b60008060006060848603121561507e57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ec057600080fd5b6000602082840312156150b557600080fd5b81356128b181614c9f565b60005b838110156150db5781810151838201526020016150c3565b50506000910152565b600081518084526150fc8160208601602086016150c0565b601f01601f19169290920160200192915050565b8281526040602082015260006113c160408301846150e4565b600067ffffffffffffffff8084111561514457615144614dc6565b8360051b602061515660208301614ddc565b8681529185019160208101903684111561516f57600080fd5b865b848110156151a3578035868111156151895760008081fd5b61519536828b01614e0d565b845250918301918301615171565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ac260608301846150e4565b600083516151ea8184602088016150c0565b7f5f5f00000000000000000000000000000000000000000000000000000000000090830190815283516152248160028401602088016150c0565b01600201949350505050565b805160208083015191908110156129125760001960209190910360031b1b16919050565b6020815260006128b160208301846150e4565b60408152600061527a60408301856150e4565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561032657610326615292565b6001600160f01b03198416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516153048160038601602089016150c0565b8084019050816003820152845191506153248260048301602088016150c0565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156153bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526153aa8583516150e4565b94509285019290850190600101615370565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b8181038181111561032657610326615292565b808202811582820484141761032657610326615292565b60008151808452602080850194506020840160005b8381101561543a5781518752958201959082019060010161541e565b509495945050505050565b6080815260006154586080830187615409565b828103602084015261546a81876150e4565b90508460408401528281036060840152613ba881856150e4565b86815260c06020820152600061549d60c0830188615409565b82810360408401526154af81886150e4565b905085606084015282810360808401526154c981866150e4565b9150508260a0830152979650505050505050565b600082516154ef8184602087016150c0565b9190910192915050565b6020815260006128b16020830184615409565b8381526060602082015260006155256060830185615409565b9050826040830152949350505050565b8281526040602082015260006113c16040830184615409565b6001600160a01b0384168152826020820152606060408201526000612ac260608301846150e4565b84815260806020820152600061558f6080830186615409565b60ff851660408401528281036060840152613ba881856150e4565b600083516155bc8184602088016150c0565b8351908301906155d08183602088016150c0565b01949350505050565b8281526000602080830184516020860160005b82811015615608578151845292840192908401906001016155ec565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261564857634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006156606060830186615409565b65ffffffffffff851660208401528281036040840152611c2781856150e4565b8481526080602082015260006156996080830186615409565b65ffffffffffff851660408401528281036060840152613ba881856150e4565b600084516156cb8184602089016150c0565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b60608152600061570b60608301866150e4565b60208301949094525060400152919050565b64ffffffffff81811683821601908082111561573b5761573b615292565b5092915050565b87815260e06020820152600061575b60e0830189615409565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261579281856150e4565b9a9950505050505050505050565b60c0815260006157b360c0830189615409565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a08401526157ef81856150e4565b9998505050505050505050565b600060ff821660ff810361581257615812615292565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b506040516200490d3803806200490d833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e051610100516147df6200012e60003960008181610701015281816113df01526115530152600061069901526000610631015260006105b00152600050506147df6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004613fb3565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461400b565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461400b565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610943565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b61029461094d565b61029c610bf5565b6102a4610c76565b6102ac610cda565b6102b4610d56565b6102bc610dba565b6102c4610df7565b6102cc610e73565b6102d4610eef565b6102dc610f83565b6102e4611013565b6102ec61108b565b6102f46110ef565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906140bc565b600161115d565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906140bc565b6103796101f4565b611203565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906140bc565b6103c16101f4565b60016112e0565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906140bc565b6113a2565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600061073161145f565b905060005b60048110156107bc576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107b49101604051602081830303815290604052610798906140bc565b8383600481106107aa576107aa6140e0565b6020020151611544565b600101610736565b5060006107c76115e4565b905060005b6002811015610849576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261084191015b60405160208183030381529060405261082f906140bc565b8383600281106107aa576107aa6140e0565b6001016107cc565b506000610854611635565b905060005b60028110156108b0576040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526108a89101610817565b600101610859565b5060006108bb6116a3565b905060005b600e81101561093c576040805161737960f01b6020820152600060228201527f526567697374726174696f6e000000000000000000000000000000000000000060308201526109349101604051602081830303815290604052610922906140bc565b8383600e81106107aa576107aa6140e0565b6001016108c0565b5050505050565b60006101fe6118b4565b6109767f746273746f72650000000000000000005461626c657300000000000000000000611900565b156109f457604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526109eb9291600401614146565b60405180910390fd5b610a1d7f746273746f72650000000000000000005265736f757263654964730000000000611900565b15610a5557604080517f746273746f72650000000000000000005265736f7572636549647300000000006020820181905291016109aa565b610b147f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000632001005f60d81b7e6003025f5f5fc4c40000000000000000000000000000000000000000000000610ac961198d565b604051602001610ad991906141b9565b604051602081830303815290604052610af0611a12565b604051602001610b0091906141b9565b604051602081830303815290604052611bda565b610b977f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b632001005f60d81b7e01010060000000000000000000000000000000000000000000000000000000610b70611ca1565b604051602001610b8091906141b9565b604051602081830303815290604052610af0611d18565b610bc27f746273746f72650000000000000000005461626c657300000000000000000000600161115d565b610bed7f746273746f72650000000000000000005265736f757263654964730000000000600161115d565b61056c611d8f565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000632001005f60d81b7e14010061000000000000000000000000000000000000000000000000000000610c69611e07565b610c71611e7e565b611ef5565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b632001005f60d81b7e2001001f000000000000000000000000000000000000000000000000000000610cd2611e07565b610c71611fc9565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b7e340200615f00000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610d4e612040565b610c7161210a565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b7e28020061610000000000000000000000000000000000000000000000000000632001005f60d81b610db2612181565b610c7161224b565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b632001005f60d81b80610db2611e07565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b7e3402005f6100000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610e6b6122c2565b610c7161238c565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e15020014010000000000000000000000000000000000000000000000000000632001005f60d81b7e15020061600000000000000000000000000000000000000000000000000000610ee7612403565b610c7161247a565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007e2402005f430000000000000000000000000000000000000000000000000000610f7b612544565b610c716125bb565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c01000000000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007c01c500000000000000000000000000000000000000000000000000000061100b612685565b610c716126fc565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611083612403565b610c71612773565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b7e14010061000000000000000000000000000000000000000000000000000000632001005f60d81b6110e76127ea565b610c71612403565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000060007e14010061000000000000000000000000000000000000000000000000000000611083612861565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611193576111936140e0565b6020026020010181815250506111fe7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016111e191151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612894565b505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611239576112396140e0565b6020026020010181815250506111fe7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016112ab919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612894565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611315576113156140e0565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061134e5761134e6140e0565b60200260200101818152505061139c7f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016111e191151560f81b815260010190565b50505050565b6111fe6113ad6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a9000000000000000000000000000000000000000000000000000000001790526128a9565b611467613f58565b60405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c616464726573732900000081525081526020016040518060600160405280602281526020016147b16022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905090565b6111fe61154f6101f4565b60007f0000000000000000000000000000000000000000000000000000000000000000858586604051602401611587939291906141cc565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6548a90a000000000000000000000000000000000000000000000000000000001790526128a9565b6115ec613f7f565b6040518060400160405280604051806060016040528060338152602001614755603391398152602001604051806060016040528060318152602001614624603191399052919050565b61163d613f7f565b60405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d290000000081525081526020016040518060600160405280602881526020016146b0602891399052919050565b6116ab613f98565b604051806101c001604052806040518060400160405280601c81526020017f696e7374616c6c4d6f64756c6528616464726573732c62797465732900000000815250815260200160405180606001604052806040815260200161456f60409139815260200160405180606001604052806028815260200161465560289139815260200160405180606001604052806024815260200161454b6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d65737061636528627974657333322900000000000081525081526020016040518060600160405280602981526020016147886029913981526020016040518060600160405280602581526020016146d86025913981526020016040518060600160405280602481526020016146006024913981526020016040518060600160405280602881526020016145d860289139815260200160405180606001604052806033815260200161467d6033913981526020016040518060600160405280602981526020016145af6029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e28616464726573732900000081525081526020016040518060600160405280603281526020016147236032913981526020016040518060600160405280602681526020016146fd602691399052919050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806118fb573391505090565b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611939576119396140e0565b602090810291909101015260006119797f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b6128d6565b90506119858160f81c90565b949350505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816119a45790505090506040518060400160405280600781526020017f7461626c6549640000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a2a5790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a8a57611a8a6140e0565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ade57611ade6140e0565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b3257611b326140e0565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b8657611b866140e0565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110611a0457611a046140e0565b6000611be786868661290c565b90506000611bf58484612942565b90506000611c038585612962565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c3d57611c3d6140e0565b6020908102919091010152611c957f746273746f72650000000000000000005461626c657300000000000000000000828686867e6003022020200000000000000000000000000000000000000000000000000061298e565b50505050505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cb85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d2f5790505090506040518060400160405280600681526020017f657869737473000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611dff61198d565b610c71612cb4565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e1e5790505090506040518060400160405280600b81526020017f6e616d657370616365496400000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e955790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6000611eff6118b4565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f3157611f2c878787878787612d2b565b611fc0565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611f8d908a908a908a908a908a908a906004016141f7565b600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050505b50505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611fe05790505090506040518060400160405280600781526020017f62616c616e63650000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816120565790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106120b6576120b66140e0565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e7473486173680000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816121215790505090506040518060400160405280600b81526020017f6973496e7374616c6c656400000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816121975790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106121f7576121f76140e0565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816122625790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c49640000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816122d85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110612338576123386140e0565b60200260200101819052506040518060400160405280600681526020017f63616c6c6572000000000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816123a35790505090506040518060400160405280600681526020017f616363657373000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161241a5790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816124905790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106124f0576124f06140e0565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161255b5790505090506040518060400160405280601581526020017f776f726c6446756e6374696f6e53656c6563746f72000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816125d15790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110612631576126316140e0565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161269c5790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f720000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816127135790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e617475726500000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161278a5790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816128015790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160008082526020820190925260609161288e565b60608152602001906001900390816128795790505b50905090565b61093c85856128a384876131da565b85613213565b60606000806128ba87878787613493565b91509150816128cc576128cc81613514565b9695505050505050565b60006129036128e5868661351c565b60ff858116601b0360080285901c166128fe85876131da565b613572565b95945050505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612977929190614241565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff00000000000000000000000000000000000000000000000000000000000016036129ff57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516129f294939291906142ac565b60405180910390a2612cac565b6000612a0a876135c3565b905060005b8151811015612ae3576000828281518110612a2c57612a2c6140e0565b60200260200101519050612a586001826affffffffffffffffffffff191661364c90919063ffffffff16565b15612ada576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612aa7908c908c908c908c908c908c906004016142f6565b600060405180830381600087803b158015612ac157600080fd5b505af1158015612ad5573d6000803e3d6000fd5b505050505b50600101612a0f565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612b1a94939291906142ac565b60405180910390a26000612b2e888861351c565b90506000602087019050612b4682600089518461366a565b6000612b5185613729565b1115612bd5576000612b638a8a613766565b878155905060208601915060008060005b612b7d88613729565b8160ff161015612bd057612b928d8d836137bc565b9250612bad8a8260ff166028026038011c64ffffffffff1690565b9150612bbc836000848861366a565b612bc68286614365565b9450600101612b74565b505050505b60005b8351811015611c95576000848281518110612bf557612bf56140e0565b60200260200101519050612c216002826affffffffffffffffffffff191661364c90919063ffffffff16565b15612ca3576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612c70908e908e908e908e908e908e906004016142f6565b600060405180830381600087803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b505050505b50600101612bd8565b505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ccb5790505090506040518060400160405280600581526020017f686f6f6b7300000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614801590612da45750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e20577f74620000000000000000000000000000000000000000000000000000000000008687604051602001612dde91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526109eb939291600401614378565b612e298561383c565b612e34846001613a83565b612e3f836000613a83565b60e084901c60e885901c0160ff16825114612e9f5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff16815114612eff5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f775760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b612f8085613c1f565b612f8984613c1f565b14612fdb57612f9785613c1f565b612fa084613c1f565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b612fe485613729565b612fed84613729565b1461303f57612ffb85613729565b61300484613729565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60005b61304b86613c1f565b8110156130e65761307561305f8583613c31565b60c5811115613070576130706143b9565b613c52565b6008601b8390030287901c60ff16146130de576008601b8290030286901c60ff166130a361305f8684613c31565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b600101613042565b5060006131437f74620000000000000000000000000000000000000000000000000000000000006131178960101b90565b60101c7fffff000000000000000000000000000000000000000000000000000000000000919091161790565b9050600061315a611bdd60f21b6131178a60101b90565b905061316582611900565b80613174575061317481611900565b1561318d5787886040516020016109aa91815260200190565b6131c588888888886040516020016131a591906141b9565b60405160208183030381529060405288604051602001610b0091906141b9565b6131d088600161115d565b5050505050505050565b600080805b8360ff1681101561320b5761320160ff601b83900360080287901c1683614365565b91506001016131df565b509392505050565b611bdd60f21b847fffff000000000000000000000000000000000000000000000000000000000000160361328257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051613275939291906143cf565b60405180910390a261139c565b600061328e858561351c565b9050600061329b866135c3565b905060005b81518110156133705760008282815181106132bd576132bd6140e0565b602002602001015190506132e96004826affffffffffffffffffffff191661364c90919063ffffffff16565b15613367576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613334908b908b908b908b90600401614402565b600060405180830381600087803b15801561334e57600080fd5b505af1158015613362573d6000803e3d6000fd5b505050505b506001016132a0565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516133a5939291906143cf565b60405180910390a26133c0828565ffffffffffff1685613cb2565b60005b8151811015611fc05760008282815181106133e0576133e06140e0565b6020026020010151905061340c6008826affffffffffffffffffffff191661364c90919063ffffffff16565b1561348a576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613457908b908b908b908b90600401614402565b600060405180830381600087803b15801561347157600080fd5b505af1158015613485573d6000803e3d6000fd5b505050505b506001016133c3565b600060608373ffffffffffffffffffffffffffffffffffffffff166134b9848888613cc8565b6040516134c6919061443b565b600060405180830381855af49150503d8060008114613501576040519150601f19603f3d011682016040523d82523d6000602084013e613506565b606091505b509097909650945050505050565b805160208201fd5b60008282604051602001613531929190614457565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000602082106135985760208204840193506020828161359457613594614493565b0691505b508254600882021b60208290038084111561320b576001850154600882021c82179150509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106135fd576135fd6140e0565b602090810291909101015260006136357f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613cdf565b90506119856136478260008451613d19565b613da7565b60008160ff168261365d8560581c90565b1660ff1614905092915050565b82156136e457602083106136945760208304840193506020838161369057613690614493565b0692505b82156136e45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116136d557505061139c565b50600194909401939182900391015b5b602082106137065780518455600190930192601f19909101906020016136e5565b811561139c576000600019600884021c8554835182191691161785555050505050565b6000600860018061373c600260206144a9565b61374691906144a9565b61375091906144a9565b61375a91906144bc565b8260ff911c1692915050565b6000828260405160200161377b929190614457565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016137d1929190614457565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613873576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061387e82613729565b905060058111156138c5576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016109eb565b60006138d083613c1f565b905060006138de8383614365565b9050601c811115613925576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016109eb565b6000805b838110156139d05760ff601b82900360080287901c16600081900361397d576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b60208111156139bb576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b6139c58184614365565b925050600101613929565b506139da85613db8565b8114613a26576139e985613db8565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109eb565b825b601c811015612cac5760ff601b82900360080287901c168015613a7a576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b50600101613a28565b80158015613a8f575081155b15613ab05760405163d498615960e01b8152600060048201526024016109eb565b6000613abb83613729565b90506005811115613ae25760405163d498615960e01b8152600481018290526024016109eb565b6000613aed84613c1f565b90506000613afb8383614365565b9050601c811115613b225760405163d498615960e01b8152600481018290526024016109eb565b6000805b83811015613b8e576000613b3d61305f8984613c31565b905080600003613b79576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b838184614365565b925050600101613b26565b50613b9886613db8565b8114613bc357613ba786613db8565b60405163d498615960e01b81526004016109eb91815260200190565b825b82811015611fc0576000613bdc61305f8984613c31565b90508015613c16576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101613bc5565b600060086001613746600260206144a9565b6000601b8290036008028360ff911c1660c581111561295b5761295b6143b9565b6000808260c5811115613c6757613c676143b9565b60ff1690506061811015613c8157601f1660010192915050565b60618360c5811115613c9557613c956143b9565b03613ca35750601492915050565b50600092915050565b50919050565b6111fe83838351613cc38560200190565b61366a565b606083838360405160200161292a939291906144d3565b6060611985613cef8585856137bc565b6000613d1485613cff8989613ddb565b9060ff166028026038011c64ffffffffff1690565b613dee565b600081831180613d295750835182115b15613d66578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016109eb93929190614525565b60208401613d748482614365565b90506000613d8285856144a9565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061295b8360156000613e11565b60006008613dc8600260206144a9565b613dd291906144bc565b9190911c919050565b600061295b613dea8484613766565b5490565b60405160208101601f19603f848401011660405282825261320b85858584613e8c565b60606000613e1f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281613e4557613e45614493565b04905060405193506020840160208202810160405281855260005b82811015613e80578451871c825293870193602090910190600101613e60565b50505050509392505050565b8215613f135760208310613eb657602083048401935060208381613eb257613eb2614493565b0692505b8215613f13576020839003600081841015613ed95750600019600884021c613ee3565b50600019600882021c5b8554600886021b818451168219821617845250818411613f0457505061139c565b50600194909401939182900391015b5b60208210613f355783548152600190930192601f1990910190602001613f14565b811561139c576000600019600884021c8251865482191691161782525050505050565b60405180608001604052806004905b6060815260200190600190039081613f675790505090565b6040805180820190915260608152600160208201613f67565b604080516101c0810190915260608152600d60208201613f67565b600060208284031215613fc557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461295b57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561401d57600080fd5b813567ffffffffffffffff8082111561403557600080fd5b818401915084601f83011261404957600080fd5b81358181111561405b5761405b613ff5565b604051601f8201601f19908116603f0116810190838211818310171561408357614083613ff5565b8160405282815287602084870101111561409c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613cac5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b838110156141115781810151838201526020016140f9565b50506000910152565b600081518084526141328160208601602086016140f6565b601f01601f19169290920160200192915050565b828152604060208201526000611985604083018461411a565b60008282518085526020808601955060208260051b8401016020860160005b848110156141ac57601f1986840301895261419a83835161411a565b9884019892509083019060010161417e565b5090979650505050505050565b60208152600061295b602083018461415f565b8381526060602082015260006141e5606083018561411a565b82810360408401526128cc818561411a565b86815285602082015284604082015283606082015260c06080820152600061422260c083018561415f565b82810360a0840152614234818561415f565b9998505050505050505050565b600083516142538184602088016140f6565b8351908301906142678183602088016140f6565b01949350505050565b60008151808452602080850194506020840160005b838110156142a157815187529582019590820190600101614285565b509495945050505050565b6080815260006142bf6080830187614270565b82810360208401526142d1818761411a565b905084604084015282810360608401526142eb818561411a565b979650505050505050565b86815260c06020820152600061430f60c0830188614270565b8281036040840152614321818861411a565b9050856060840152828103608084015261433b818661411a565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee61434f565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612903606083018461411a565b634e487b7160e01b600052602160045260246000fd5b6060815260006143e26060830186614270565b65ffffffffffff8516602084015282810360408401526128cc818561411a565b84815260806020820152600061441b6080830186614270565b65ffffffffffff8516604084015282810360608401526142eb818561411a565b6000825161444d8184602087016140f6565b9190910192915050565b8281526000602080830184516020860160005b828110156144865781518452928401929084019060010161446a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b818103818111156101ee576101ee61434f565b80820281158282048414176101ee576101ee61434f565b600084516144e58184602089016140f6565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b606081526000614538606083018661411a565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c737472696e6729626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9746273746f72650000000000000000005265736f757263654964730000000000a164736f6c6343000818000a","sourceMap":"11533:179:145:-:0;;;1572:26:102;;;1594:4;-1:-1:-1;;1572:26:102;;;;;;;;3126:44:105;;;;;;;;;;;228:9:0;186:51;;11533:179:145;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002365760003560e01c80637c0c53691162000142578063d591221f11620000cc578063f28e093d1162000097578063fa531f85116200007a578063fa531f851462000418578063fa7626d41462000422578063fb44e83a146200043057600080fd5b8063f28e093d14620003f7578063f63809d9146200040e57600080fd5b8063d591221f14620003c2578063e13aba4814620003cc578063e20c9f7114620003d6578063e70629ce14620003e057600080fd5b8063a0e70267116200010d578063a0e70267146200036f578063b5508aa91462000386578063ba414fa61462000390578063be4733bc14620003ab57600080fd5b80637c0c5369146200032b57806385226c811462000342578063916a17c6146200035b5780639642ddaf146200036557600080fd5b80633e5e3c2311620001c45780635babb758116200018f5780635babb75814620002f457806366d9a9a014620002fe5780637055729814620003175780637a715085146200032157600080fd5b80633e5e3c2314620002bf5780633f7286f414620002c957806348186a7f14620002d35780635ad7ef9214620002ea57600080fd5b80631ed7831c11620002055780631ed7831c14620002725780632d60f8a3146200029457806337e816d3146200029e5780633dc6c95514620002b557600080fd5b80630a9254e4146200023b5780631037c205146200024757806318eab016146200025e5780631aeb10a61462000268575b600080fd5b6200024562000447565b005b6200024562000258366004620053e7565b62000563565b62000245620008c3565b6200024562000c83565b6200027c62000e55565b6040516200028b91906200541f565b60405180910390f35b6200024562000eb9565b62000245620002af366004620053e7565b62000ef4565b620002456200130e565b6200027c620014ea565b6200027c6200154c565b62000245620002e43660046200546e565b620015ae565b6200024562001c92565b6200024562001ec1565b6200030862001eda565b6040516200028b9190620054d0565b6200024562001fe2565b62000245620023e1565b620002456200033c366004620053e7565b620026c8565b6200034c620029a6565b6040516200028b9190620055f5565b6200030862002a80565b6200024562002b7f565b62000245620003803660046200565d565b62002d79565b6200034c62003043565b6200039a6200311d565b60405190151581526020016200028b565b62000245620003bc366004620053e7565b62003269565b620002456200357a565b62000245620037fe565b6200027c62003acd565b62000245620003f1366004620053e7565b62003b2f565b62000245620004083660046200565d565b62003e2f565b620002456200401b565b62000245620041e6565b6000546200039a9060ff1681565b62000245620004413660046200565d565b62004327565b6200045162004411565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517fc2722ecc000000000000000000000000000000000000000000000000000000008152905162000561929163c2722ecc9160048083019260209291908290030181865afa158015620004e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050891906200568c565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620005b957600080fd5b505afa158015620005ce573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200062057600080fd5b505afa15801562000635573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b81526001600160a01b038781166004830152602482018790529091169250633dc8ded79150604401600060405180830381600087803b1580156200068857600080fd5b505af11580156200069d573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200070457600080fd5b505af115801562000719573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03861691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601f546040517faa82e0170000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018490529091169063aa82e01790604401600060405180830381600087803b158015620007c657600080fd5b505af1158015620007db573d6000803e3d6000fd5b505050506200086f601f60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000837573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200085d9190620056b3565b620008698385620056e3565b62004444565b601f546040516370a0823160e01b81526001600160a01b038581166004830152620008be9216906370a08231906024015b602060405180830381865afa15801562000837573d6000803e3d6000fd5b505050565b601f54604051633dc8ded760e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200091a57600080fd5b505af11580156200092f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200098957600080fd5b505af11580156200099e573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b815230600482015260001960248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af1158015620009f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1b9190620056f9565b50601f546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015262000aaf9216906323b872dd906064015b6020604051808303816000875af115801562000a83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aa99190620056f9565b62004556565b601f54604080516318160ddd60e01b8152905162000b31926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b229190620056b3565b670de0b6b3a764000062004444565b601f54604051636eb1769f60e11b81526001600160a01b03838116600483015230602483015262000bb492169063dd62ed3e90604401602060405180830381865afa15801562000b85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bab9190620056b3565b60001962004444565b601f546040516370a0823160e01b81526001600160a01b03838116600483015262000c319216906370a08231906024015b602060405180830381865afa15801562000c03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c299190620056b3565b600062004444565b601f546040516370a0823160e01b815261beef600482015262000c80916001600160a01b0316906370a08231906024015b602060405180830381865afa15801562000afc573d6000803e3d6000fd5b50565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562000ce657600080fd5b505af115801562000cfb573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a362000d806040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250620045ce565b601f5460405163095ea7b360e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000ddc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e029190620056f9565b905062000e0e620045e3565b62000e198162004556565b601f54604051636eb1769f60e11b815230600482015261beef602482015262000c80916001600160a01b03169063dd62ed3e9060440162000c62565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000eaf57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e90575b5050505050905090565b6200056162000aa97f6e736d6f636b65726332306e7300000000000000000000000000000000000000601f546001600160a01b031662004877565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000f4a57600080fd5b505afa15801562000f5f573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000fb257600080fd5b505afa15801562000fc7573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200101857600080fd5b505afa1580156200102d573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b815261abcd600482018190526024820186905293506001600160a01b039091169150633dc8ded790604401600060405180830381600087803b1580156200108357600080fd5b505af115801562001098573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620010f257600080fd5b505af115801562001107573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152602481018790526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200115d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011839190620056f9565b506040513060248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b200000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001251916004016200571d565b600060405180830381600087803b1580156200126c57600080fd5b505af115801562001281573d6000803e3d6000fd5b5050601f546040516323b872dd60e01b81526001600160a01b03858116600483015288811660248301526044820187905290911692506323b872dd91506064016020604051808303816000875af1158015620012e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013079190620056f9565b5050505050565b601f54604051633dc8ded760e01b8152306004820152670c7d713b49da000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b1580156200136257600080fd5b505af115801562001377573d6000803e3d6000fd5b505060408051306024820152670c7d713b49da00006044820152670de0b6b3a764000060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200143591906004016200571d565b600060405180830381600087803b1580156200145057600080fd5b505af115801562001465573d6000803e3d6000fd5b5050601f5460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116925063a9059cbb91506044016020604051808303816000875af1158015620014c4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c809190620056f9565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000eaf576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e90575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000eaf576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e90575050505050905090565b604051632631f2b160e11b81526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200160457600080fd5b505afa15801562001619573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03861615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200167357600080fd5b505afa15801562001688573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03881615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620016e257600080fd5b505afa158015620016f7573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200174957600080fd5b505afa1580156200175e573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b81526001600160a01b038881166004830152602482018690529091169250633dc8ded79150604401600060405180830381600087803b158015620017b157600080fd5b505af1158015620017c6573d6000803e3d6000fd5b5050601f546040516370a0823160e01b81526001600160a01b03888116600483015262001848945090911691506370a08231906024015b602060405180830381865afa1580156200181b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018419190620056b3565b8262004444565b60405163ca669fa760e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200189e57600080fd5b505af1158015620018b3573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b81526001600160a01b03898116600483015260248201879052909116925063095ea7b391506044016020604051808303816000875af11580156200190b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019319190620056f9565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156200199557600080fd5b505af1158015620019aa573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620019f491815260200190565b60405180910390a360405163ca669fa760e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a5257600080fd5b505af115801562001a67573d6000803e3d6000fd5b5050601f546040516323b872dd60e01b81526001600160a01b03888116600483015287811660248301526044820186905262001ab2945090911691506323b872dd9060640162000a63565b601f54604080516318160ddd60e01b8152905162001aff926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156200181b573d6000803e3d6000fd5b600019820362001b9257601f54604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001b8c92169063dd62ed3e90604401602060405180830381865afa15801562001b5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b859190620056b3565b8362004444565b62001bd0565b601f54604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001bd092169063dd62ed3e90604401620008a0565b826001600160a01b0316846001600160a01b03160362001c2657601f546040516370a0823160e01b81526001600160a01b03868116600483015262001c209216906370a0823190602401620017fd565b62001307565b601f546040516370a0823160e01b81526001600160a01b03868116600483015262001c5c9216906370a082319060240162000be5565b601f546040516370a0823160e01b81526001600160a01b038581166004830152620013079216906370a0823190602401620017fd565b601f54604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162001d5e926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001cf8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d22919081019062005748565b6040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525062004954565b601f54604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162001e2a926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001dc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001dee919081019062005748565b6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525062004954565b601f54604080517f313ce567000000000000000000000000000000000000000000000000000000008152905162000561926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801562001e90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eb6919062005801565b60ff16601262004444565b601f5462000561906001600160a01b0316151562004556565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001fd95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001fc057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001f6c5790505b5050505050815250508152602001906001019062001efe565b50505050905090565b601f54604051633dc8ded760e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200203957600080fd5b505af11580156200204e573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620020a857600080fd5b505af1158015620020bd573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200211a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021409190620056f9565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620021a457600080fd5b505af1158015620021b9573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92506001600160a01b03841691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620022476040518060400160405280600c81526020017f7472616e7366657246726f6d0000000000000000000000000000000000000000815250620045ce565b601f546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015260009216906323b872dd906064016020604051808303816000875af1158015620022ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022d19190620056f9565b9050620022dd620045e3565b620022e88162004556565b601f54604080516318160ddd60e01b8152905162002335926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b601f54604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526200237192169063dd62ed3e9060440162000be5565b601f546040516370a0823160e01b81526001600160a01b038481166004830152620023a79216906370a082319060240162000be5565b601f546040516370a0823160e01b815261beef6004820152620023dd916001600160a01b0316906370a082319060240162000c62565b5050565b601f54604051633dc8ded760e01b815261abcd60048201819052670c7d713b49da00006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200243857600080fd5b505af11580156200244d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620024a757600080fd5b505af1158015620024bc573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002519573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200253f9190620056f9565b506040516001600160a01b0382166024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200260b916004016200571d565b600060405180830381600087803b1580156200262657600080fd5b505af11580156200263b573d6000803e3d6000fd5b5050601f546040516323b872dd60e01b81526001600160a01b03858116600483015261beef6024830152670de0b6b3a7640000604483015290911692506323b872dd91506064016020604051808303816000875af1158015620026a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023dd9190620056f9565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200271e57600080fd5b505afa15801562002733573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200278657600080fd5b505afa1580156200279b573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620027ec57600080fd5b505afa15801562002801573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b815261abcd600482018190526024820187905293506001600160a01b039091169150633dc8ded790604401600060405180830381600087803b1580156200285757600080fd5b505af11580156200286c573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620028c657600080fd5b505af1158015620028db573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152602481018690526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029579190620056f9565b506040516001600160a01b03821660248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b90608401620011dd565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001fd9578382906000526020600020018054620029ec9062005826565b80601f016020809104026020016040519081016040528092919081815260200182805462002a1a9062005826565b801562002a6b5780601f1062002a3f5761010080835404028352916020019162002a6b565b820191906000526020600020905b81548152906001019060200180831162002a4d57829003601f168201915b505050505081526020019060010190620029ca565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001fd95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002b6657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002b125790505b5050505050815250508152602001906001019062002aa4565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002be257600080fd5b505af115801562002bf7573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef9250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362002c7d6040518060400160405280600481526020017f6d696e7400000000000000000000000000000000000000000000000000000000815250620045ce565b601f54604051633dc8ded760e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b15801562002cd357600080fd5b505af115801562002ce8573d6000803e3d6000fd5b5050505062002cf6620045e3565b601f54604080516318160ddd60e01b8152905162002d43926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b601f546040516370a0823160e01b815261beef600482015262000561916001600160a01b0316906370a082319060240162000c62565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002dcf57600080fd5b505afa15801562002de4573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b8152306004820152602481018590526001600160a01b039091169250633dc8ded79150604401600060405180830381600087803b15801562002e3557600080fd5b505af115801562002e4a573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562002eb157600080fd5b505af115801562002ec6573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601f5460405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905262002f4792169063a9059cbb9060440162000a63565b601f54604080516318160ddd60e01b8152905162002f94926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156200181b573d6000803e3d6000fd5b6001600160a01b038216300362002fd957601f546040516370a0823160e01b8152306004820152620023dd916001600160a01b0316906370a0823190602401620017fd565b601f546040516370a0823160e01b81523060048201526200300d916001600160a01b0316906370a082319060240162000be5565b601f546040516370a0823160e01b81526001600160a01b038481166004830152620023dd9216906370a0823190602401620017fd565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001fd9578382906000526020600020018054620030899062005826565b80601f0160208091040260200160405190810160405280929190818152602001828054620030b79062005826565b8015620031085780601f10620030dc5761010080835404028352916020019162003108565b820191906000526020600020905b815481529060010190602001808311620030ea57829003601f168201915b50505050508152602001906001019062003067565b60008054610100900460ff16156200313e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620032645760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620031e6917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005862565b60408051601f19818403018152908290526200320291620058ac565b6000604051808303816000865af19150503d806000811462003241576040519150601f19603f3d011682016040523d82523d6000602084013e62003246565b606091505b5091505080806020019051810190620032609190620056f9565b9150505b919050565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620032bf57600080fd5b505afa158015620032d4573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200332757600080fd5b505afa1580156200333c573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200338d57600080fd5b505afa158015620033a2573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b81526001600160a01b038781166004830152602482018790529091169250633dc8ded79150604401600060405180830381600087803b158015620033f557600080fd5b505af11580156200340a573d6000803e3d6000fd5b5050604080516001600160a01b038716602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620034c091906004016200571d565b600060405180830381600087803b158015620034db57600080fd5b505af1158015620034f0573d6000803e3d6000fd5b5050601f546040517faa82e0170000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201869052909116925063aa82e0179150604401600060405180830381600087803b1580156200355c57600080fd5b505af115801562003571573d6000803e3d6000fd5b50505050505050565b601f54604051633dc8ded760e01b8152306004820152670de0b6b3a764000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b158015620035ce57600080fd5b505af1158015620035e3573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200364a57600080fd5b505af11580156200365f573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620036e46040518060400160405280600881526020017f7472616e73666572000000000000000000000000000000000000000000000000815250620045ce565b601f5460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af115801562003740573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037669190620056f9565b905062003772620045e3565b6200377d8162004556565b601f54604080516318160ddd60e01b81529051620037ca926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000afc573d6000803e3d6000fd5b601f546040516370a0823160e01b815230600482015262000c31916001600160a01b0316906370a082319060240162000be5565b601f54604051633dc8ded760e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b1580156200385457600080fd5b505af115801562003869573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620038d057600080fd5b505af1158015620038e5573d6000803e3d6000fd5b5050604051670c7d713b49da000081526000925061beef91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200396b6040518060400160405280600481526020017f6275726e00000000000000000000000000000000000000000000000000000000815250620045ce565b601f546040517faa82e01700000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da000060248201526001600160a01b039091169063aa82e01790604401600060405180830381600087803b158015620039da57600080fd5b505af1158015620039ef573d6000803e3d6000fd5b50505050620039fd620045e3565b601f54604080516318160ddd60e01b8152905162003a7f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562003a4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a709190620056b3565b67016345785d8a000062004444565b601f546040516370a0823160e01b815261beef600482015262000561916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003a4a573d6000803e3d6000fd5b6060600c80548060200260200160405190810160405280929190818152602001828054801562000eaf576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e90575050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003b8557600080fd5b505afa15801562003b9a573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003bed57600080fd5b505afa15801562003c02573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003c5357600080fd5b505afa15801562003c68573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b8152306004820152602481018690526001600160a01b039091169250633dc8ded79150604401600060405180830381600087803b15801562003cb957600080fd5b505af115801562003cce573d6000803e3d6000fd5b50506040805130602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062003d7b91906004016200571d565b600060405180830381600087803b15801562003d9657600080fd5b505af115801562003dab573d6000803e3d6000fd5b5050601f5460405163a9059cbb60e01b81526001600160a01b03878116600483015260248201869052909116925063a9059cbb91506044016020604051808303816000875af115801562003e03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e299190620056f9565b50505050565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003e8557600080fd5b505afa15801562003e9a573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562003f0157600080fd5b505af115801562003f16573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3601f54604051633dc8ded760e01b81526001600160a01b0384811660048301526024820184905290911690633dc8ded790604401600060405180830381600087803b15801562003faa57600080fd5b505af115801562003fbf573d6000803e3d6000fd5b505050506200300d601f60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200181b573d6000803e3d6000fd5b601f54604051633dc8ded760e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b031690633dc8ded790604401600060405180830381600087803b1580156200407257600080fd5b505af115801562004087573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620040e157600080fd5b505af1158015620040f6573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562004153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041799190620056f9565b50604051306024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b2000000000000000000000000000000000000000000000000000000009060840162002597565b601f54604051633dc8ded760e01b815230600482015260001960248201526001600160a01b0390911690633dc8ded790604401600060405180830381600087803b1580156200423457600080fd5b505af115801562004249573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620042ac57600080fd5b505af1158015620042c1573d6000803e3d6000fd5b5050601f54604051633dc8ded760e01b8152306004820152600160248201526001600160a01b039091169250633dc8ded79150604401600060405180830381600087803b1580156200431257600080fd5b505af115801562003e29573d6000803e3d6000fd5b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200437d57600080fd5b505afa15801562004392573d6000803e3d6000fd5b5050601f5460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052620043d59450909116915063095ea7b39060440162000a63565b601f54604051636eb1769f60e11b81523060048201526001600160a01b038481166024830152620023dd92169063dd62ed3e90604401620017fd565b60006040516200442190620053c2565b604051809103906000f0801580156200443e573d6000803e3d6000fd5b50905090565b808214620023dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620044d29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8826040516200450b9190620058ca565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162004544919062005916565b60405180910390a1620023dd62004aa4565b8062000c80577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045bc9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000c8062004aa4565b62000c80620045dd8262004beb565b62004d2c565b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af11580156200468b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046b19190620056f9565b620046b95750565b600060a082601c54620046cd9190620056e3565b620046d99190620056e3565b620046e690600162005954565b90506000811162004758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e277420757365206761730000000000000060448201526064015b60405180910390fd5b80601d601b6040516200476c919062005a03565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35001620047bb601b8262005a65565b5062004859601b8054620047cf9062005826565b80601f0160208091040260200160405190810160405280929190818152602001828054620047fd9062005826565b80156200484e5780601f1062004822576101008083540402835291602001916200484e565b820191906000526020600020905b8154815290600101906020018083116200483057829003601f168201915b505050505062004ff7565b604080516020810190915260008152601b90620008be908262005b52565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110620048b357620048b362005c16565b602002602001018181525050826001600160a01b031660001b81600181518110620048e257620048e262005c16565b602090810291909101015260006200493c7f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000620050fa565b9050620049498160f81c90565b925050505b92915050565b80604051602001620049679190620058ac565b6040516020818303038152906040528051906020012082604051602001620049909190620058ac565b6040516020818303038152906040528051906020012014620023dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a329060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162004a6b919062005c2c565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004544919062005c7e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562004bbd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262004b58929160200162005862565b60408051601f198184030181529082905262004b7491620058ac565b6000604051808303816000865af19150503d806000811462004bb3576040519150601f19603f3d011682016040523d82523d6000602084013e62004bb8565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b601f54604080517fc2722ecc00000000000000000000000000000000000000000000000000000000815290516060926000926001600160a01b0390911691829163c2722ecc9160048083019260209291908290030181865afa15801562004c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c7c91906200568c565b6001600160a01b03161462004cc7576040518060400160405280600681526020017f776f726c645f000000000000000000000000000000000000000000000000000081525062004cfe565b6040518060400160405280600981526020017f696e7465726e616c5f00000000000000000000000000000000000000000000008152505b9050808360405160200162004d1592919062005cbc565b604051602081830303815290604052915050919050565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004dce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004df49190620056f9565b62004dfc5750565b601b805462004e0b9062005826565b9050600014601b60405160200162004e24919062005cef565b6040516020818303038152906040529062004e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200474f91906200571d565b50601d8160405162004e819190620058ac565b9081526020016040518091039020546000148160405160200162004ea6919062005d76565b6040516020818303038152906040529062004ef0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200474f91906200571d565b50601b62004eff828262005b52565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004f5f57600080fd5b505af115801562004f74573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562004fe257600080fd5b505af115801562001307573d6000803e3d6000fd5b62000c807f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d846040516200503f9190620058ac565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252620050899160040190815260200190565b600060405180830381865afa158015620050a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620050d1919081019062005748565b82604051602001620050e592919062005de4565b604051602081830303815290604052620051ca565b600080620051076200523f565b9050306001600160a01b03821603620051315762005128868686866200527a565b915050620051c2565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906200517e90899089908990899060040162005e69565b602060405180830381865afa1580156200519c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051289190620056b3565b949350505050565b62000c8081604051602401620051e191906200571d565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620052b6565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168062003264573391505090565b6000620052ad6200528c8686620052d7565b60ff858116601b0360080285901c16620052a785876200532f565b6200536c565b95945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008282604051602001620052ee92919062005ec8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562005364576200535960ff601b83900360080287901c168362005954565b915060010162005334565b509392505050565b600060208210620053965760208204840193506020828162005392576200539262005f06565b0691505b508254600882021b60208290038084111562005364576001850154600882021c82179150509392505050565b62017a5c8062005f1d83390190565b6001600160a01b038116811462000c8057600080fd5b600080600060608486031215620053fd57600080fd5b83356200540a81620053d1565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015620054625783516001600160a01b0316835292840192918401916001016200543b565b50909695505050505050565b600080600080600060a086880312156200548757600080fd5b85356200549481620053d1565b94506020860135620054a681620053d1565b93506040860135620054b881620053d1565b94979396509394606081013594506080013592915050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b848110156200559257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200557c5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005538565b50978a01979550505091870191600101620054fa565b50919998505050505050505050565b60005b83811015620055be578181015183820152602001620055a4565b50506000910152565b60008151808452620055e1816020860160208601620055a1565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200565057603f198886030184526200563d858351620055c7565b945092850192908501906001016200561e565b5092979650505050505050565b600080604083850312156200567157600080fd5b82356200567e81620053d1565b946020939093013593505050565b6000602082840312156200569f57600080fd5b8151620056ac81620053d1565b9392505050565b600060208284031215620056c657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156200494e576200494e620056cd565b6000602082840312156200570c57600080fd5b81518015158114620056ac57600080fd5b602081526000620056ac6020830184620055c7565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156200575b57600080fd5b815167ffffffffffffffff808211156200577457600080fd5b818401915084601f8301126200578957600080fd5b8151818111156200579e576200579e62005732565b604051601f8201601f19908116603f01168101908382118183101715620057c957620057c962005732565b81604052828152876020848701011115620057e357600080fd5b620057f6836020830160208801620055a1565b979650505050505050565b6000602082840312156200581457600080fd5b815160ff81168114620056ac57600080fd5b600181811c908216806200583b57607f821691505b6020821081036200585c57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200589e816004850160208701620055a1565b919091016004019392505050565b60008251620058c0818460208701620055a1565b9190910192915050565b6040815260006200590860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200590860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b808201808211156200494e576200494e620056cd565b60008154620059798162005826565b60018281168015620059945760018114620059c857620059f9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620059f9565b8560005260208060002060005b85811015620059f05781548a820152908401908201620059d5565b50505082870194505b5050505092915050565b6000620056ac82846200596a565b601f821115620008be576000816000526020600020601f850160051c8101602086101562005a3c5750805b601f850160051c820191505b8181101562005a5d5782815560010162005a48565b505050505050565b81810362005a71575050565b62005a7d825462005826565b67ffffffffffffffff81111562005a985762005a9862005732565b62005ab08162005aa9845462005826565b8462005a11565b6000601f82116001811462005ae7576000831562005ace5750848201545b600019600385901b1c1916600184901b17845562001307565b600085815260209020601f19841690600086815260209020845b8381101562005b23578286015482556001958601959091019060200162005b01565b508583101562005b425781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b815167ffffffffffffffff81111562005b6f5762005b6f62005732565b62005b808162005aa9845462005826565b602080601f83116001811462005bb8576000841562005b9f5750858301515b600019600386901b1c1916600185901b17855562005a5d565b600085815260208120601f198616915b8281101562005be95788860151825594840194600190910190840162005bc8565b508582101562005b4257939096015160001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b60408152600062005c6a60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620051c28185620055c7565b60408152600062005c6a60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6000835162005cd0818460208801620055a1565b83519083019062005ce6818360208801620055a1565b01949350505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600062005d23600c8301846200596a565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000825162005db081600c850160208701620055a1565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b7f474153205245504f52543a20000000000000000000000000000000000000000081526000835162005e1e81600c850160208801620055a1565b7f2000000000000000000000000000000000000000000000000000000000000000600c91840191820152835162005e5d81600d840160208801620055a1565b01600d01949350505050565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b8181101562005eae5784518352938301939183019160010162005e90565b505060ff9690961660408501525050506060015292915050565b8281526000602080830184516020860160005b8281101562005ef95781518452928401929084019060010162005edb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe6101206040523480156200001257600080fd5b50604051806040016040528060058152602001642a37b5b2b760d91b815250604051806040016040528060038152602001622a25a760e91b8152506200005d620001ff60201b60201c565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b0319166001600160a01b0383161790556a6d6f636b65726332306e7360a81b81306001600160a01b03821603620000c257620000c2620002a6565b506001600160901b031981166080526000620000dd620004d3565b60405163b29e408960e01b8152600481018290529091506001600160a01b0384169063b29e408990602401600060405180830381600087803b1580156200012357600080fd5b505af115801562000138573d6000803e3d6000fd5b505050505050506200015f6b544f54414c5f535550504c5960a01b620004ed60201b60201c565b60a052620001786742414c414e43455360c01b620004ed565b60c0526200019369414c4c4f57414e43455360b01b620004ed565b60e052620001ac674d4554414441544160c01b620004ed565b6101005260a051620001be9062000506565b60c051620001cc906200053a565b60e051620001da906200056b565b61010051620001e99062000593565b620001f782826012620005c0565b505062002aa0565b60006040516200020f90620025fc565b604051809103906000f0801580156200022c573d6000803e3d6000fd5b5090506001600160a01b03811663c4d66de862000248620005f3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200028a57600080fd5b505af11580156200029f573d6000803e3d6000fd5b5050505090565b620002d17f746273746f72650000000000000000005461626c657300000000000000000000620006fe565b156200033957604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f198184030181529082905263dfaaf9cf60e01b8252620003309291600401620026a4565b60405180910390fd5b6200035360008051602062017a3c833981519152620006fe565b156200037c576040805160008051602062017a3c83398151915260208201819052910162000306565b6200041d7f746273746f72650000000000000000005461626c6573000000000000000000006503001811010160cd1b632001005f60d81b671800c097d7d7f13160ba1b620003c96200077b565b604051602001620003db91906200271d565b60408051601f19818403018152919052620003f5620007ee565b6040516020016200040791906200271d565b60408051601f1981840301815291905262000983565b6200047e60008051602062017a3c833981519152630101000160d81b632001005f60d81b6208080360dd1b6200045262000a59565b6040516020016200046491906200271d565b60408051601f19818403018152919052620003f562000ac1565b620004ab7f746273746f72650000000000000000005461626c657300000000000000000000600162000b25565b620004c760008051602062017a3c833981519152600162000b25565b620004d162000bc0565b565b6000620004e860805162000c0b60201b60201c565b905090565b600062000500613a3160f11b8362000c24565b92915050565b6200053781630100080160dd1b6000632001001f60d81b6200052762000c42565b6200053162000c76565b62000cdf565b50565b6200053781630100080160dd1b631401006160d81b632001001f60d81b6200056162000d8a565b6200053162000def565b6200053781630100080160dd1b64280200616160d01b632001001f60d81b6200056162000e52565b6200053781630101020160d81b60006501010200c5c560c81b620005b662000c42565b6200053162000ef7565b6040805160608101825260ff831681526020810185905290810183905261010051620005ed908262000fdc565b50505050565b600060405162000603906200260a565b604051809103906000f08015801562000620573d6000803e3d6000fd5b506040516200062f9062002618565b604051809103906000f0801580156200064c573d6000803e3d6000fd5b506040516200065b9062002626565b604051809103906000f08015801562000678573d6000803e3d6000fd5b50604051620006879062002634565b604051809103906000f080158015620006a4573d6000803e3d6000fd5b50604051620006b39062002642565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620006f8573d6000803e3d6000fd5b50905090565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106200073a576200073a62002732565b602090810291909101015260006200076b60008051602062017a3c8339815191528383630101000160d81b62001090565b905060f881901c5b949350505050565b604080516001808252818301909252606091816020015b606081526020019060019003908162000792579050509050604051806040016040528060078152602001661d18589b19525960ca1b81525081600081518110620007e057620007e062002732565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081620008065790505090506040518060400160405280600b81526020016a199a595b1913185e5bdd5d60aa1b8152508160008151811062000858576200085862002732565b6020026020010181905250604051806040016040528060098152602001686b6579536368656d6160b81b815250816001815181106200089b576200089b62002732565b60200260200101819052506040518060400160405280600b81526020016a76616c7565536368656d6160a81b81525081600281518110620008e057620008e062002732565b602002602001018190525060405180604001604052806012815260200171616269456e636f6465644b65794e616d657360701b815250816003815181106200092c576200092c62002732565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110620007e057620007e062002732565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000620009bc8484620010cc565b90506000620009cc8585620010e2565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811062000a095762000a0962002732565b602090810291909101015262000a4d7f746273746f72650000000000000000005461626c657300000000000000000000828686866503001811010160cd1b62001110565b50505050505050505050565b604080516001808252818301909252606091816020015b606081526020019060019003908162000a705790505090506040518060400160405280600a8152602001691c995cdbdd5c98d9525960b21b81525081600081518110620007e057620007e062002732565b604080516001808252818301909252606091816020015b606081526020019060019003908162000ad85790505090506040518060400160405280600681526020016565786973747360d01b81525081600081518110620007e057620007e062002732565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811062000b5e5762000b5e62002732565b60200260200101818152505062000bbb60008051602062017a3c83398151915260001b8260008560405160200162000b9d91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b620013e8565b505050565b620004d17f746273746f726500000000000000000053746f7265486f6f6b73000000000000600160e01b632001005f60d81b60db60d91b62000c016200077b565b6200053162001408565b60101c600160801b600160f01b0316616e7360f01b1790565b600062000c3b83608051846200146b60201b60201c565b9392505050565b60408051600080825260208201909252606091620006f8565b606081526020019060019003908162000c5b57905050905090565b604080516001808252818301909252606091816020015b606081526020019060019003908162000c8d5790505090506040518060400160405280600b81526020016a746f74616c537570706c7960a81b81525081600081518110620007e057620007e062002732565b600062000ceb620014b0565b9050306001600160a01b0382160362000d145762000d0e878787878787620014f0565b62000d81565b604051630ba51f4960e01b81526001600160a01b03821690630ba51f499062000d4c908a908a908a908a908a908a9060040162002748565b600060405180830381600087803b15801562000d6757600080fd5b505af115801562000d7c573d6000803e3d6000fd5b505050505b50505050505050565b604080516001808252818301909252606091816020015b606081526020019060019003908162000da1579050509050604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525081600081518110620007e057620007e062002732565b604080516001808252818301909252606091816020015b606081526020019060019003908162000e065790505090506040518060400160405280600581526020016476616c756560d81b81525081600081518110620007e057620007e062002732565b6040805160028082526060828101909352816020015b606081526020019060019003908162000e68579050509050604051806040016040528060078152602001661858d8dbdd5b9d60ca1b8152508160008151811062000eb65762000eb662002732565b60200260200101819052506040518060400160405280600781526020016639b832b73232b960c91b81525081600181518110620007e057620007e062002732565b60408051600380825260808201909252606091816020015b606081526020019060019003908162000f0f57905050905060405180604001604052806008815260200167646563696d616c7360c01b8152508160008151811062000f5e5762000f5e62002732565b6020026020010181905250604051806040016040528060048152602001636e616d6560e01b8152508160018151811062000f9c5762000f9c62002732565b6020026020010181905250604051806040016040528060068152602001651cde5b589bdb60d21b81525081600281518110620007e057620007e062002732565b80516000906200102b906040805160f89290921b7fff00000000000000000000000000000000000000000000000000000000000000166020830152805160018184030181526021909201905290565b905060006200104983602001518460400151620010cc60201b60201c565b905060006200106784602001518560400151620010e260201b60201c565b6040805160008152602081019091529091506200108886828686866200189d565b505050505050565b6000620010c3620010a2868662001937565b60ff858116601b0360080285901c16620010bd85876200198f565b620019cc565b95945050505050565b600062000c3b8351835162001a2260201b60201c565b60608282604051602001620010f992919062002796565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b031916036200115c578560008051602062017a1c833981519152868686866040516200114e949392919062002807565b60405180910390a262001088565b6000620011698762001a37565b905060005b81518110156200122b5760008282815181106200118f576200118f62002732565b60209081029190910101519050620011b36001600160581b03198216600162001acf565b1562001221576040516315c19b2760e21b8152606082901c906357066c9c90620011ec908c908c908c908c908c908c9060040162002857565b600060405180830381600087803b1580156200120757600080fd5b505af11580156200121c573d6000803e3d6000fd5b505050505b506001016200116e565b508660008051602062017a1c8339815191528787878760405162001253949392919062002807565b60405180910390a2600062001269888862001937565b905060006020870190506200128982600089518462001af460201b60201c565b6000620012968562001bbe565b111562001328576000620012ab8a8a62001c03565b878155905060208601915060008060005b620012c78862001bbe565b8160ff1610156200132357620012df8d8d8362001c5b565b9250620012fb8a8260ff166028026038011c64ffffffffff1690565b91506200130c836000848862001af4565b620013188286620028cc565b9450600101620012bc565b505050505b60005b835181101562000a4d5760008482815181106200134c576200134c62002732565b60209081029190910101519050620013706001600160581b03198216600262001acf565b15620013de57604051635b28cdaf60e01b8152606082901c90635b28cdaf90620013a9908e908e908e908e908e908e9060040162002857565b600060405180830381600087803b158015620013c457600080fd5b505af1158015620013d9573d6000803e3d6000fd5b505050505b506001016200132b565b620014018585620013fa84876200198f565b8562001cc5565b5050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816200141f57905050905060405180604001604052806005815260200164686f6f6b7360d81b81525081600081518110620007e057620007e062002732565b60006200147b60706010620028cc565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620014eb573391505090565b919050565b613a3160f11b866001600160f01b031916148015906200151f5750611bdd60f21b866001600160f01b03191614155b156200156b57613a3160f11b86876040516020016200154091815260200190565b60408051601f19818403018152908290526331b4668360e01b825262000330939291600401620028e2565b620015768562001ee9565b620015838460016200209e565b620015908360006200209e565b60e084901c60e885901c0160ff16825114620015d95760e084901c60e885901c0160ff1682516040516301ee597360e31b81526004810192909252602482015260440162000330565b60e085901c60e886901c0160ff16815114620016215760e085901c60e886901c0160ff168151604051621f7b1360ea1b81526004810192909252602482015260440162000330565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614620016825760e085901c60e886901c0160ff1660e084901c60e885901c0160ff16604051631e53a9b160e31b81526004810192909252602482015260440162000330565b6200168d8562002229565b620016988462002229565b14620016d757620016a98562002229565b620016b48462002229565b6040516365cc0adf60e01b81526004810192909252602482015260440162000330565b620016e28562001bbe565b620016ed8462001bbe565b146200172c57620016fe8562001bbe565b620017098462001bbe565b60405163edea958760e01b81526004810192909252602482015260440162000330565b60005b6200173a8662002229565b811015620017ca576200176c6200175285836200223d565b60c58111156200176657620017666200290a565b62002261565b6008601b8390030287901c60ff1614620017c1576008601b8290030286901c60ff166200179e6200175286846200223d565b6040516309531f6d60e21b81526004810192909252602482015260440162000330565b6001016200172f565b506000620017f6613a3160f11b620017e28960101b90565b60101c6001600160f01b0319919091161790565b905060006200180f611bdd60f21b620017e28a60101b90565b90506200181c82620006fe565b806200182e57506200182e81620006fe565b15620018495787886040516020016200030691815260200190565b6200188688888888886040516020016200186491906200271d565b604051602081830303815290604052886040516020016200040791906200271d565b6200189388600162000b25565b5050505050505050565b6000620018a9620014b0565b9050306001600160a01b03821603620018d157620018cb8686868686620022c3565b62001088565b60405163298314fb60e01b81526001600160a01b0382169063298314fb9062001907908990899089908990899060040162002920565b600060405180830381600087803b1580156200192257600080fd5b505af115801562000a4d573d6000803e3d6000fd5b600082826040516020016200194e92919062002977565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015620019c457620019b960ff601b83900360080287901c1683620028cc565b915060010162001994565b509392505050565b600060208210620019f657602082048401935060208281620019f257620019f2620029b5565b0691505b508254600882021b602082900380841115620019c4576001850154600882021c82179150509392505050565b606081901b603883901b838301171792915050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811062001a745762001a7462002732565b6020908102919091010152600062001aae7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383620022dd565b90506200077362001ac982600084516200231e60201b60201c565b62002392565b600060ff82168262001ae18560581c90565b1660ff1614905092915050565b60200190565b821562001b76576020831062001b235760208304840193506020838162001b1f5762001b1f620029b5565b0692505b821562001b765760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841162001b67575050620005ed565b50600194909401939182900391015b5b6020821062001b9a5780518455600190930192601f199091019060200162001b77565b8115620005ed576000600019600884021c8554835182191691161785555050505050565b6000600860018062001bd360026020620029cb565b62001bdf9190620029cb565b62001beb9190620029cb565b62001bf79190620029e1565b8260ff911c1692915050565b6000828260405160200162001c1a92919062002977565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200162001c7292919062002977565b604051602081830303815290604052805190602001208260f81b6001600160f81b0319167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b611bdd60f21b846001600160f01b0319160362001d0f5783600080516020620179fc83398151915284848460405162001d0193929190620029fb565b60405180910390a2620005ed565b600062001d1d858562001937565b9050600062001d2c8662001a37565b905060005b815181101562001dea57600082828151811062001d525762001d5262002732565b6020908102919091010151905062001d766001600160581b03198216600462001acf565b1562001de05760405163964f667d60e01b8152606082901c9063964f667d9062001dab908b908b908b908b9060040162002a3c565b600060405180830381600087803b15801562001dc657600080fd5b505af115801562001ddb573d6000803e3d6000fd5b505050505b5060010162001d31565b5085600080516020620179fc83398151915286868660405162001e1093929190620029fb565b60405180910390a262001e2d8265ffffffffffff861685620023a4565b60005b815181101562000d8157600082828151811062001e515762001e5162002732565b6020908102919091010151905062001e756001600160581b03198216600862001acf565b1562001edf5760405163a8ba872160e01b8152606082901c9063a8ba87219062001eaa908b908b908b908b9060040162002a3c565b600060405180830381600087803b15801562001ec557600080fd5b505af115801562001eda573d6000803e3d6000fd5b505050505b5060010162001e30565b8062001f085760405163500cf26d60e11b815260040160405180910390fd5b600062001f158262001bbe565b9050600581111562001f45576040516333c9efb160e11b8152600481018290526005602482015260440162000330565b600062001f528362002229565b9050600062001f628383620028cc565b9050601c81111562001f925760405163ecd893b960e01b815260048101829052601c602482015260440162000330565b6000805b83811015620020135760ff601b82900360080287901c16600081900362001fd4576040516353b2dd0560e01b81526004810183905260240162000330565b602081111562001ffb57604051637237f23760e01b81526004810183905260240162000330565b620020078184620028cc565b92505060010162001f96565b506200201f85620023c3565b811462002056576200203185620023c3565b6040516375d4b26f60e11b815260048101919091526024810182905260440162000330565b825b601c811015620010885760ff601b82900360080287901c1680156200209457604051631d8d44db60e01b81526004810183905260240162000330565b5060010162002058565b80158015620020ab575081155b15620020ce5760405163d498615960e01b81526000600482015260240162000330565b6000620020db8362001bbe565b90506005811115620021045760405163d498615960e01b81526004810182905260240162000330565b6000620021118462002229565b90506000620021218383620028cc565b9050601c8111156200214a5760405163d498615960e01b81526004810182905260240162000330565b6000805b83811015620021a5576000620021696200175289846200223d565b9050806000036200218d576040516307a25a1160e51b815260040160405180910390fd5b620021998184620028cc565b9250506001016200214e565b50620021b186620023c3565b8114620021e057620021c386620023c3565b60405163d498615960e01b81526004016200033091815260200190565b825b8281101562000d81576000620021fd6200175289846200223d565b905080156200221f576040516307a25a1160e51b815260040160405180910390fd5b50600101620021e2565b60006008600162001bdf60026020620029cb565b6000601b8290036008028360ff911c1660c581111562000c3b5762000c3b6200290a565b6000808260c58111156200227957620022796200290a565b60ff16905060618110156200229457601f1660010192915050565b60618360c5811115620022ab57620022ab6200290a565b03620022ba5750601492915050565b50600092915050565b620014018585858585620022d785620023ea565b62001110565b606062000773620022f085858562001c5b565b6000620023188562002303898962002453565b9060ff166028026038011c64ffffffffff1690565b62002469565b6000818311806200232f5750835182115b1562002356578383836040516323230fa360e01b8152600401620003309392919062002a79565b60208401620023668482620028cc565b90506000620023768585620029cb565b6001600160801b031660809290921b9190911795945050505050565b6060600062000c3b836015836200248e565b62000bbb83838351620023bd8562001aee60201b60201c565b62001af4565b60006008620023d560026020620029cb565b620023e19190620029e1565b9190911c919050565b6000655461626c657360501b668b9d8c8b908d9b60c81b0382016200241957506503001811010160cd1b919050565b62000500620024497f746273746f72650000000000000000005461626c6573000000000000000000008462002506565b60206000620019cc565b600062000c3b62002465848462001c03565b5490565b60405160208101601f19603f8484010116604052828252620019c48585858462002523565b606060006200249d8560801c90565b90506001600160801b0385166000858281620024bd57620024bd620029b5565b04905060405193506020840160208202810160405281855260005b82811015620024fa578451871c825293870193602090910190600101620024d8565b50505050509392505050565b60408051602081018490529081018290526000906060016200194e565b8215620025b4576020831062002552576020830484019350602083816200254e576200254e620029b5565b0692505b8215620025b4576020839003600081841015620025785750600019600884021c62002582565b50600019600882021c5b8554600886021b818451168219821617845250818411620025a5575050620005ed565b50600194909401939182900391015b5b60208210620025d85783548152600190930192601f1990910190602001620025b5565b8115620005ed576000600019600884021c8251865482191691161782525050505050565b61538c80620045db83390190565b611c68806200996783390190565b61178f806200b5cf83390190565b610b38806200cd5e83390190565b615859806200d89683390190565b61490d80620130ef83390190565b60005b838110156200266d57818101518382015260200162002653565b50506000910152565b600081518084526200269081602086016020860162002650565b601f01601f19169290920160200192915050565b82815260406020820152600062000773604083018462002676565b60008282518085526020808601955060208260051b8401016020860160005b848110156200271057601f19868403018952620026fd83835162002676565b98840198925090830190600101620026de565b5090979650505050505050565b60208152600062000c3b6020830184620026bf565b634e487b7160e01b600052603260045260246000fd5b86815285602082015284604082015283606082015260c0608082015260006200277560c0830185620026bf565b82810360a0840152620027898185620026bf565b9998505050505050505050565b60008351620027aa81846020880162002650565b835190830190620027c081836020880162002650565b01949350505050565b60008151808452602080850194506020840160005b83811015620027fc57815187529582019590820190600101620027de565b509495945050505050565b6080815260006200281c6080830187620027c9565b828103602084015262002830818762002676565b905084604084015282810360608401526200284c818562002676565b979650505050505050565b86815260c0602082015260006200287260c0830188620027c9565b828103604084015262002886818862002676565b90508560608401528281036080840152620028a2818662002676565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620005005762000500620028b6565b61ffff60f01b84168152826020820152606060408201526000620010c3606083018462002676565b634e487b7160e01b600052602160045260246000fd5b85815260a0602082015260006200293b60a0830187620027c9565b82810360408401526200294f818762002676565b905084606084015282810360808401526200296b818562002676565b98975050505050505050565b8281526000602080830184516020860160005b82811015620029a8578151845292840192908401906001016200298a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b81810381811115620005005762000500620028b6565b8082028115828204841417620005005762000500620028b6565b60608152600062002a106060830186620027c9565b65ffffffffffff85166020840152828103604084015262002a32818562002676565b9695505050505050565b84815260806020820152600062002a576080830186620027c9565b65ffffffffffff8516604084015282810360608401526200284c818562002676565b60608152600062002a8e606083018662002676565b60208301949094525060400152919050565b60805160a05160c05160e05161010051611acc62002b0f6000396000818161037c015281816105d10152610677015260008181610730015261078101526000818161064b0152610cd10152600081816104970152610ca40152600081816101a001526102560152611acc6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637c015a891161008c578063aa82e01711610066578063aa82e0171461020e578063c2722ecc14610221578063dd62ed3e14610241578063ebd8d4f61461025457600080fd5b80637c015a891461019b57806395d89b41146101f3578063a9059cbb146101fb57600080fd5b806323b872dd116100c857806323b872dd14610146578063313ce567146101595780633dc8ded71461017357806370a082311461018857600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f76102bf565b60405161010491906116f2565b60405180910390f35b61012061011b36600461171c565b6102ce565b6040519015158152602001610104565b6101386102ea565b604051908152602001610104565b610120610154366004611746565b6102f4565b61016161031a565b60405160ff9091168152602001610104565b61018661018136600461171c565b610324565b005b610138610196366004611782565b610332565b6101c27f000000000000000000000000000000000000000000000000000000000000000081565b6040517fffffffffffffffffffffffffffff0000000000000000000000000000000000009091168152602001610104565b6100f761033d565b61012061020936600461171c565b610347565b61018661021c36600461171c565b610355565b61022961035f565b6040516001600160a01b039091168152602001610104565b61013861024f36600461179d565b610369565b7f000000000000000000000000000000000000000000000000000000000000000060101c7dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e7300000000000000000000000000000000000000000000000000000000000017610138565b60606102c9610375565b905090565b6000336102de81858560016103a0565b60019150505b92915050565b60006102c9610490565b6000336103028582856104bb565b61030d858585610534565b60019150505b9392505050565b60006102c96105ca565b61032e82826105f5565b5050565b60006102e482610644565b60606102c9610670565b6000336102de818585610534565b61032e828261069b565b60006102c96106ea565b60006103138383610729565b60606102c97f0000000000000000000000000000000000000000000000000000000000000000610756565b6001600160a01b0384166103e8576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6001600160a01b03831661042b576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b61043684848461077c565b801561048a57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161048191815260200190565b60405180910390a35b50505050565b60006102c97f00000000000000000000000000000000000000000000000000000000000000006107a8565b60006104c78484610729565b9050600019811461048a5781811015610525576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016103df565b61048a848484840360006103a0565b6001600160a01b038316610577576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b6001600160a01b0382166105ba576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b6105c58383836107cd565b505050565b60006102c97f00000000000000000000000000000000000000000000000000000000000000006108f4565b6001600160a01b038216610638576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b61032e600083836107cd565b60006102e47f00000000000000000000000000000000000000000000000000000000000000008361093c565b60606102c97f00000000000000000000000000000000000000000000000000000000000000006109aa565b6001600160a01b0382166106de576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103df565b61032e826000836107cd565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610724573391505090565b919050565b60006103137f000000000000000000000000000000000000000000000000000000000000000084846109c9565b60408051600080825260208201909252606091610774848383610a64565b949350505050565b6105c57f0000000000000000000000000000000000000000000000000000000000000000848484610b2b565b604080516000808252602082019092526000610774848383630100080160dd1b610be2565b6001600160a01b0383166107fb576107f6816107e7610490565b6107f191906117fc565b610c9f565b610869565b600061080684610644565b90508181101561085b576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016103df565b61086784838303610ccc565b505b6001600160a01b03821661088e5761088981610883610490565b03610c9f565b6108a2565b6108a2828261089c85610644565b01610ccc565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108e791815260200190565b60405180910390a3505050565b6040805160008082526020820190925260006109318483837e01010201000000000000000000000000000000000000000000000000000000610be2565b60f81c949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106109815761098161180f565b602090810291909101015260006109a1858383630100080160dd1b610be2565b95945050505050565b6040805160008082526020820190925260609161077484836001610a64565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110610a0e57610a0e61180f565b602002602001018181525050826001600160a01b031660001b81600181518110610a3a57610a3a61180f565b60209081029190910101526000610a5a868383630100080160dd1b610be2565b9695505050505050565b60606000610a706106ea565b9050306001600160a01b03821603610a9557610a8d858585610cf7565b915050610313565b6040517f1e7889770000000000000000000000000000000000000000000000000000000081526001600160a01b03821690631e78897790610ade90889088908890600401611861565b600060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a8d919081019061188d565b509392505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110610b6c57610b6c61180f565b602002602001018181525050826001600160a01b031660001b81600181518110610b9857610b9861180f565b602002602001018181525050610bdb8582600085604051602001610bbe91815260200190565b60408051601f19818403018152919052630100080160dd1b610d31565b5050505050565b600080610bed6106ea565b9050306001600160a01b03821603610c1357610c0b86868686610de7565b915050610774565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610c5e90899089908990899060040161193a565b602060405180830381865afa158015610c7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190611969565b610cc97f000000000000000000000000000000000000000000000000000000000000000082610e14565b50565b61032e7f00000000000000000000000000000000000000000000000000000000000000008383610e3b565b6060610774610d07858585610ea3565b6000610d2c85610d178989610f23565b9060ff166028026038011c64ffffffffff1690565b610f36565b6000610d3b6106ea565b9050306001600160a01b03821603610d5f57610d5a8686868686610f59565b610ddf565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090610dac9089908990899089908990600401611982565b600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b505050505b505050505050565b60006109a1610df68686610f6e565b60ff858116601b0360080285901c16610e0f8587610fc4565b610ff5565b604080516000808252602082018352918101839052906105c5908490839060608201610bbe565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110610e7d57610e7d61180f565b60200260200101818152505061048a8482600085604051602001610bbe91815260200190565b60008383604051602001610eb89291906119c9565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610313610f328484611046565b5490565b60405160208101601f19603f8484010116604052828252610b238585858461109c565b610bdb8585610f688487610fc4565b85611168565b60008282604051602001610f839291906119c9565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610b2357610feb60ff601b83900360080287901c16836117fc565b9150600101610fc9565b60006020821061101b5760208204840193506020828161101757611017611a05565b0691505b508254600882021b602082900380841115610b23576001850154600882021c82179150509392505050565b6000828260405160200161105b9291906119c9565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561112357602083106110c6576020830484019350602083816110c2576110c2611a05565b0692505b82156111235760208390036000818410156110e95750600019600884021c6110f3565b50600019600882021c5b8554600886021b81845116821982161784525081841161111457505061048a565b50600194909401939182900391015b5b602082106111455783548152600190930192601f1990910190602001611124565b811561048a576000600019600884021c8251865482191691161782525050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111f257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111e593929190611a1b565b60405180910390a261048a565b60006111fe8585610f6e565b9050600061120b8661140c565b905060005b81518110156112e057600082828151811061122d5761122d61180f565b602002602001015190506112596004826affffffffffffffffffffff191661149590919063ffffffff16565b156112d7576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112a4908b908b908b908b90600401611a4e565b600060405180830381600087803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b505050505b50600101611210565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161131593929190611a1b565b60405180910390a2611330828565ffffffffffff16856114b3565b60005b81518110156114035760008282815181106113505761135061180f565b6020026020010151905061137c6008826affffffffffffffffffffff191661149590919063ffffffff16565b156113fa576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113c7908b908b908b908b90600401611a4e565b600060405180830381600087803b1580156113e157600080fd5b505af11580156113f5573d6000803e3d6000fd5b505050505b50600101611333565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106114465761144661180f565b6020908102919091010152600061147e7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610cf7565b905061077461149082600084516114c9565b611557565b60008160ff16826114a68560581c90565b1660ff1614905092915050565b6105c5838383516114c48560200190565b611568565b6000818311806114d95750835182115b15611516578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103df93929190611a87565b6020840161152484826117fc565b905060006115328585611aac565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006103138360156000611627565b82156115e257602083106115925760208304840193506020838161158e5761158e611a05565b0692505b82156115e25760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115d357505061048a565b50600194909401939182900391015b5b602082106116045780518455600190930192601f19909101906020016115e3565b811561048a576000600019600884021c8554835182191691161785555050505050565b606060006116358560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161165b5761165b611a05565b04905060405193506020840160208202810160405281855260005b82811015611696578451871c825293870193602090910190600101611676565b50505050509392505050565b60005b838110156116bd5781810151838201526020016116a5565b50506000910152565b600081518084526116de8160208601602086016116a2565b601f01601f19169290920160200192915050565b60208152600061031360208301846116c6565b80356001600160a01b038116811461072457600080fd5b6000806040838503121561172f57600080fd5b61173883611705565b946020939093013593505050565b60008060006060848603121561175b57600080fd5b61176484611705565b925061177260208501611705565b9150604084013590509250925092565b60006020828403121561179457600080fd5b61031382611705565b600080604083850312156117b057600080fd5b6117b983611705565b91506117c760208401611705565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156102e4576102e46117e6565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156118565781518752958201959082019060010161183a565b509495945050505050565b83815260606020820152600061187a6060830185611825565b905060ff83166040830152949350505050565b60006020828403121561189f57600080fd5b815167ffffffffffffffff808211156118b757600080fd5b818401915084601f8301126118cb57600080fd5b8151818111156118dd576118dd6117d0565b604051601f8201601f19908116603f01168101908382118183101715611905576119056117d0565b8160405282815287602084870101111561191e57600080fd5b61192f8360208301602088016116a2565b979650505050505050565b8481526080602082015260006119536080830186611825565b60ff949094166040830152506060015292915050565b60006020828403121561197b57600080fd5b5051919050565b85815260a06020820152600061199b60a0830187611825565b60ff8616604084015282810360608401526119b681866116c6565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156119f8578151845292840192908401906001016119dc565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000611a2e6060830186611825565b65ffffffffffff851660208401528281036040840152610a5a81856116c6565b848152608060208201526000611a676080830186611825565b65ffffffffffff85166040840152828103606084015261192f81856116c6565b606081526000611a9a60608301866116c6565b60208301949094525060400152919050565b818103818111156102e4576102e46117e656fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b60405164191718171960d91b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a23360805260405164191718171960d91b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a26080516152b8620000d46000396000818161036f01526112c801526152b86000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146106f1578063e228a4a314610711578063ef6ea8621461073157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b602082015260006022820181905260308201819052916102189101604051602081830303815290604052610213906143b6565b610751565b60408051616e7360f01b602082015260006022820181905260308201529192506102649101604051602081830303815290604052610255906143b6565b61025f34846143f3565b6107d2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610873565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109439050565b9050600061035333858434610976565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614463565b6109a3565b6040516103a59190614519565b3480156103e757600080fd5b506102646103f636600461456e565b6109e6565b34801561040757600080fd5b5061026461041636600461456e565b610a99565b34801561042757600080fd5b506103ce6104363660046145fb565b610b44565b34801561044757600080fd5b50610264610456366004614659565b610b8e565b34801561046757600080fd5b50610264610476366004614706565b610c77565b34801561048757600080fd5b50610264610496366004614706565b610d2d565b3480156104a757600080fd5b506104bb6104b636600461479c565b610dda565b6040519081526020016103a5565b6103ce6104d736600461486c565b610deb565b3480156104e857600080fd5b506104fc6104f73660046148b3565b610e27565b6040516103a593929190614906565b34801561051757600080fd5b506103ce6105263660046149a6565b610e7c565b34801561053757600080fd5b50610264610546366004614a0f565b610e8b565b34801561055757600080fd5b507f322e302e320000000000000000000000000000000000000000000000000000006104bb565b6103ce61058c366004614a70565b610f00565b34801561059d57600080fd5b506104bb6105ac366004614463565b61105c565b3480156105bd57600080fd5b506104bb6105cc366004614ac9565b61109f565b3480156105dd57600080fd5b506104bb6105ec366004614b28565b6110ad565b3480156105fd57600080fd5b5061026461060c366004614b7f565b6110ba565b34801561061d57600080fd5b5061026461062c366004614bb9565b611136565b34801561063d57600080fd5b5061026461064c366004614c48565b6111e1565b34801561065d57600080fd5b5061026461066c366004614cd5565b61128f565b34801561067d57600080fd5b506104fc61068c366004614a0f565b6113d1565b34801561069d57600080fd5b506103ce6106ac3660046145fb565b611423565b3480156106bd57600080fd5b506104bb6106cc36600461479c565b611464565b3480156106dd57600080fd5b506102646106ec366004614463565b61146f565b3480156106fd57600080fd5b506104bb61070c366004614b28565b6114ef565b34801561071d57600080fd5b506104bb61072c36600461479c565b6114fc565b34801561073d57600080fd5b5061026461074c36600461456e565b611507565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061078a5761078a614cf2565b602090810291909101015260006107ca7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b6115b2565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061080857610808614cf2565b60200260200101818152505061086e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161085191815260200190565b60408051601f19818403018152919052630100080160dd1b6115df565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108cc576108cc614cf2565b6020908102919091010152600080806109257f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115f4565b9250925092506109368383836116fc565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b606060008061098787878787611714565b915091508161099957610999816118e4565b9695505050505050565b6060610999868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118ec9050565b303303610a14576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a1e8633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061197d92505050565b505050505050565b303303610ac7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ad18633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061199892505050565b6060610b85858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119d3915050565b95945050505050565b303303610bbc576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610bc68833611931565b610c6d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611a0d92505050565b5050505050505050565b303303610ca5576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610caf8733611931565b610d248787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611a23915050565b50505050505050565b303303610d5b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d658733611931565b610d248787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115df915050565b6000610de582611a66565b92915050565b6060303303610e1b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61096f33848434610976565b606060006060610e6c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115f4915050565b9250925092509450945094915050565b60606109998686868686611aeb565b303303610eb9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ec38333611931565b61086e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bee92505050565b6060303303610f30576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f5357610f4c33848434610976565b905061096f565b6000610f5f8533611c01565b9050610f6e8186338787611cb2565b15610f8757610f7f85858534610976565b91505061096f565b6000610f94866000611c01565b9050610fa38187338888611cb2565b15610fbd57610fb486868634610976565b9250505061096f565b6000610fef616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d87565b9050610ffe8188338989611cb2565b156110195761100f87878734610976565b935050505061096f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610999868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115b29050565b6000610b8585858585611e00565b60006107ca848484611e48565b3033036110e8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111289101604051602081830303815290604052611122906143b6565b33611e5e565b6111328282611eaf565b5050565b303303611164576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61116e8633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f6292505050565b30330361120f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112198833611931565b610c6d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121fd92505050565b3033036112bd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113615760408051616e7360f01b6020820152600060228201819052603082015261132c9101604051602081830303815290604052611327906143b6565b612215565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d08565b600061136b612352565b6001600160a01b0316146113ab576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113b4816123b9565b6040805160008152602081019091526113ce908290611eaf565b50565b6060600060606114148686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061245492505050565b92509250925093509350939050565b6060610b858585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061247a915050565b6000610de582612490565b30330361149d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114a78533611931565b6114e8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506125049050565b5050505050565b60006107ca84848461255d565b6000610de58261256d565b303303611535576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61153f8633611931565b610a918686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061259392505050565b6000610b856115c186866125ce565b60ff858116601b0360080285901c166115da8587612624565b61265d565b6114e885856115ee8487612624565b85611f62565b6060600060606000611605856126ae565b90506116128787836126d1565b9350600061161f8661270a565b905080156116f1576116318888612747565b935066ffffffffffffff841667ffffffffffffffff811115611655576116556147b5565b6040519080825280601f01601f19166020018201604052801561167f576020820181803683370190505b5092506020830160005b828160ff1610156116ee5760006116a18b8b8461275a565b905060006116be888460ff166028026038011c64ffffffffff1690565b90506116cd82600083876127da565b6116d781856143f3565b9350505080806116e690614d33565b915050611689565b50505b505093509350939050565b600080611708856128a6565b90969095509350505050565b600060606000611723866128bb565b905060005b81518110156117f657600082828151811061174557611745614cf2565b602002602001015190506117716001826affffffffffffffffffffff191661294490919063ffffffff16565b156117ed576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906117ba908c908c908c90600401614d52565b600060405180830381600087803b1580156117d457600080fd5b505af11580156117e8573d6000803e3d6000fd5b505050505b50600101611728565b5061180387858888612962565b909350915060005b81518110156118d957600082828151811061182857611828614cf2565b602002602001015190506118546002826affffffffffffffffffffff191661294490919063ffffffff16565b156118d0576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f999061189d908c908c908c90600401614d52565b600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050505b5060010161180b565b505094509492505050565b805160208201fd5b60606118f782612a7d565b8360ff1610156119145761190d85858585612a8f565b90506107ca565b61190d858561192285612a7d565b61192c9087614d7a565b6119d3565b61193b8282612abc565b6111325761194882612215565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d08565b6119928484848461198d89611a66565b611a23565b50505050565b60006119a48585612747565b905060006119c1828560ff166028026038011c64ffffffffff1690565b9050610a918686868460008888612aff565b60606107ca6119e385858561275a565b6000611a08856119f38989612747565b9060ff166028026038011c64ffffffffff1690565b612f39565b6114e88585858585611a1e8b611a66565b612f5c565b611a2c81612a7d565b8360ff161015611a4857611a4385858585856115df565b6114e8565b6114e88585611a5684612a7d565b611a609087614d7a565b85612593565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611ab557507e60030220202000000000000000000000000000000000000000000000000000919050565b610de5611ae27f746273746f72650000000000000000005461626c657300000000000000000000846132a1565b6020600061265d565b606081831115611b31576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b3d8787612747565b90506000611b5a828760ff166028026038011c64ffffffffff1690565b90508085101580611b6a57508084115b15611bc5578081861015611b8857611b83600186614d93565b611b8a565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611bd289898961275a565b9050611be18187888803612f39565b9998505050505050505050565b6111328282611bfc85611a66565b6132bd565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c4657611c46614cf2565b602002602001018181525050826001600160a01b031660001b81600181518110611c7257611c72614cf2565b60209081029190910101526000610b857f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b6115b2565b6000611cbd866135bc565b15611cca57506001610b85565b85611cd757506000610b85565b600080611d538660008a8a8989604051602401611cf693929190614d52565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612962565b9150915081611d6757600092505050610b85565b80806020019051810190611d7b9190614da6565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611dc057611dc0614cf2565b602090810291909101015260006107ca7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b6115b2565b600080611e0c83612a7d565b90508060ff168460ff161015611e345760ff848116601b0360080284901c165b9150506107ca565b611e2c8686611e438488614d7a565b61255d565b60006107ca848484611e5988611a66565b611e00565b6001600160a01b038116611e98616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613637565b6001600160a01b0316146111325761194882612215565b611ed9827f6fdd1c80000000000000000000000000000000000000000000000000000000006136d3565b611f4e3360008484604051602401611ef19190614519565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261372e565b50611132828280519060200120600161373f565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fec57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fdf93929190614e04565b60405180910390a2611992565b6000611ff885856125ce565b9050600061200586613823565b905060005b81518110156120da57600082828151811061202757612027614cf2565b602002602001015190506120536004826affffffffffffffffffffff191661294490919063ffffffff16565b156120d1576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061209e908b908b908b908b90600401614e37565b600060405180830381600087803b1580156120b857600080fd5b505af11580156120cc573d6000803e3d6000fd5b505050505b5060010161200a565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161210f93929190614e04565b60405180910390a261212a828565ffffffffffff1685613895565b60005b8151811015610d2457600082828151811061214a5761214a614cf2565b602002602001015190506121766008826affffffffffffffffffffff191661294490919063ffffffff16565b156121f4576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906121c1908b908b908b908b90600401614e37565b600060405180830381600087803b1580156121db57600080fd5b505af11580156121ef573d6000803e3d6000fd5b505050505b5060010161212d565b610a918686868686866122108d8d612747565b612aff565b606081601081901b6000612228836138ab565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156122835761227e7fffffffffffffffffffffffffffff00000000000000000000000000000000000084166138c2565b6122ba565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122f0576122eb836138c2565b612327565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161233993929190614e70565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123af7f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613966565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611132917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e14010014000000000000000000000000000000000000000000000000000000613a1b565b60606000606061246d858561246888611a66565b6115f4565b9250925092509250925092565b60606107ca84848461248b88611a66565b6118ec565b600061249b82613ac4565b90506124a682613b56565b6124ff5781826040516020016124be91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614efe565b919050565b60006125108585612747565b9050600061252d828560ff166028026038011c64ffffffffff1690565b9050610a918686866125468764ffffffffff8716614d93565b604080516000815260208101909152889088612aff565b60006107ca826119f38686612747565b600061257882613bf3565b9050806124ff5781826040516020016124be91815260200190565b600061259f8585612747565b905060006125bc828560ff166028026038011c64ffffffffff1690565b9050610a918686866000858888612aff565b600082826040516020016125e3929190614f17565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126555761264b60ff601b83900360080287901c16836143f3565b9150600101612629565b509392505050565b6000602082106126835760208204840193506020828161267f5761267f614f53565b0691505b508254600882021b602082900380841115612655576001850154600882021c82179150509392505050565b600060086126be60026020614d93565b6126c89190614f69565b9190911c919050565b6060816000036126f0575060408051602081019091526000815261096f565b60006126fc85856125ce565b9050610b8581600085612f39565b6000600860018061271d60026020614d93565b6127279190614d93565b6127319190614d93565b61273b9190614f69565b8260ff911c1692915050565b600061096f6127568484613c85565b5490565b6000838360405160200161276f929190614f17565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561286157602083106128045760208304840193506020838161280057612800614f53565b0692505b82156128615760208390036000818410156128275750600019600884021c612831565b50600019600882021c5b8554600886021b818451168219821617845250818411612852575050611992565b50600194909401939182900391015b5b602082106128835783548152600190930192601f1990910190602001612862565b8115611992576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128f5576128f5614cf2565b6020908102919091010152600061292d7f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119d3565b90506107ca61293f8260008451613cdb565b613d69565b60008160ff16826129558560581c90565b1660ff1614905092915050565b6000606060008061297286613d7a565b90925090506001600160a01b0382166129c3578561298f87612215565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614efe565b806129d2576129d28689611931565b8615612a1e577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612a0b82610751565b9050612a1b8261025f8b846143f3565b50505b6000612a2a8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a6257612a5d88888488613e1e565b612a6e565b612a6e88888488613e96565b90999098509650505050505050565b60006008600161272760026020614d93565b6060610b85612a9e86866125ce565b612aa88486612624565b60ff868116601b0360080286901c16612f39565b6000612aef616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ef7565b8061096f575061096f8383613ef7565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612bbf577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b7d91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f80565b6000612bda828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bf39190614d93565b612bfd91906143f3565b9050808214158015612c1f575081612c158688614fc1565b64ffffffffff1614155b15612c6f576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612cc0576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ccd848984613fc0565b90506000612cda8b613823565b905060005b8151811015612da5576000828281518110612cfc57612cfc614cf2565b60200260200101519050612d286010826affffffffffffffffffffff191661294490919063ffffffff16565b15612d9c57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d699796959493929190614fe6565b600060405180830381600087803b158015612d8357600080fd5b505af1158015612d97573d6000803e3d6000fd5b505050505b50600101612cdf565b5064ffffffffff881660005b8a60ff168160ff161015612de457612dd8878260ff166028026038011c64ffffffffff1690565b90910190600101612db1565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d604051612e1f96959493929190615044565b60405180910390a250828414612e40576000612e3b8c8c613c85565b839055505b6000612e4d8c8c8c61275a565b9050612e61818a64ffffffffff1689613895565b5060005b8151811015612f2b576000828281518110612e8257612e82614cf2565b60200260200101519050612eae6020826affffffffffffffffffffff191661294490919063ffffffff16565b15612f2257606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eef9796959493929190614fe6565b600060405180830381600087803b158015612f0957600080fd5b505af1158015612f1d573d6000803e3d6000fd5b505050505b50600101612e65565b505050505050505050505050565b60405160208101601f19603f8484010116604052828252612655858585846127da565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fe857857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612fdb9493929190615093565b60405180910390a2610a91565b6000612ff387613823565b905060005b81518110156130cc57600082828151811061301557613015614cf2565b602002602001015190506130416001826affffffffffffffffffffff191661294490919063ffffffff16565b156130c3576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613090908c908c908c908c908c908c906004016150d2565b600060405180830381600087803b1580156130aa57600080fd5b505af11580156130be573d6000803e3d6000fd5b505050505b50600101612ff8565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516131039493929190615093565b60405180910390a2600061311788886125ce565b9050600060208701905061312f82600089518461408e565b600061313a8561270a565b11156131be57600061314c8a8a613c85565b878155905060208601915060008060005b6131668861270a565b8160ff1610156131b95761317b8d8d8361275a565b92506131968a8260ff166028026038011c64ffffffffff1690565b91506131a5836000848861408e565b6131af82866143f3565b945060010161315d565b505050505b60005b83518110156132955760008482815181106131de576131de614cf2565b6020026020010151905061320a6002826affffffffffffffffffffff191661294490919063ffffffff16565b1561328c576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613259908e908e908e908e908e908e906004016150d2565b600060405180830381600087803b15801561327357600080fd5b505af1158015613287573d6000803e3d6000fd5b505050505b506001016131c1565b50505050505050505050565b60408051602081018490529081018290526000906060016125e3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361334357827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613336919061512b565b60405180910390a2505050565b600061334e84613823565b905060005b815181101561342157600082828151811061337057613370614cf2565b6020026020010151905061339c6040826affffffffffffffffffffff191661294490919063ffffffff16565b15613418576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133e59089908990899060040161513e565b600060405180830381600087803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b505050505b50600101613353565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613452919061512b565b60405180910390a2600061346685856125ce565b90506134bf816000613477866126ae565b67ffffffffffffffff81111561348f5761348f6147b5565b6040519080825280601f01601f1916602001820160405280156134b9576020820181803683370190505b50613895565b60006134ca8461270a565b11156134eb5760006134dc8686613c85565b90506134e981602061414d565b505b60005b8251811015610a9157600083828151811061350b5761350b614cf2565b602002602001015190506135376080826affffffffffffffffffffff191661294490919063ffffffff16565b156135b3576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613580908a908a908a9060040161513e565b600060405180830381600087803b15801561359a57600080fd5b505af11580156135ae573d6000803e3d6000fd5b505050505b506001016134ee565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261362f906143b6565b909114919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061367057613670614cf2565b602090810291909101015260006136c87f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e140100140000000000000000000000000000000000000000000000000000006115b2565b60601c949350505050565b6136dd828261418a565b611132576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061098787878787613e96565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061378057613780614cf2565b60200260200101818152505082816001815181106137a0576137a0614cf2565b6020026020010181815250506119927f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137ee91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115df565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061385d5761385d614cf2565b6020908102919091010152600061292d7f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119d3565b61086e838383516138a68560200190565b61408e565b60006138b9607060106143f3565b9190911b919050565b606060005b6010811015613927577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613927576001016138c7565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107ca565b6000806139716141a6565b9050306001600160a01b0382160361398f57611e2c868686866115b2565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139da908990899089908990600401615167565b602060405180830381865afa1580156139f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2c9190615196565b6000613a256141a6565b9050306001600160a01b03821603613a4957613a4486868686866115df565b610a91565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a9690899089908990899089906004016151af565b600060405180830381600087803b158015613ab057600080fd5b505af1158015613295573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613afd57613afd614cf2565b602090810291909101015260006107ca7f746273746f72650000000000000000005461626c6573000000000000000000008360017e600302202020000000000000000000000000000000000000000000000000006115b2565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b8f57613b8f614cf2565b60209081029190910101526000613be77f746273746f72650000000000000000005265736f75726365496473000000000083837e010100010000000000000000000000000000000000000000000000000000006115b2565b90506107ca8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c2c57613c2c614cf2565b602090810291909101015260006107ca7f746273746f72650000000000000000005461626c6573000000000000000000008360027e600302202020000000000000000000000000000000000000000000000000006115b2565b60008282604051602001613c9a929190614f17565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613ceb5750835182115b15613d28578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151f6565b60208401613d3684826143f3565b90506000613d448585614d93565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061096f83601560006141e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613db457613db4614cf2565b602090810291909101015260008080613e0d7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115f4565b92509250925061093683838361425b565b60006060836001600160a01b03166000613e39858989614267565b604051613e46919061521b565b60006040518083038185875af1925050503d8060008114613e83576040519150601f19603f3d011682016040523d82523d6000602084013e613e88565b606091505b509097909650945050505050565b60006060836001600160a01b0316613eaf848888614267565b604051613ebc919061521b565b600060405180830381855af49150503d8060008114613e83576040519150601f19603f3d011682016040523d82523d6000602084013e613e88565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f3057613f30614cf2565b602002602001018181525050826001600160a01b031660001b81600181518110613f5c57613f5c614cf2565b60209081029190910101526000613fb47f7462776f726c640000000000000000005265736f75726365416363657373000083837e010100010000000000000000000000000000000000000000000000000000006115b2565b9050610b858160f81c90565b600064ffffffffff821115614004576040517f7149a3c100000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614036578085038201915061403e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561410857602083106140b8576020830484019350602083816140b4576140b4614f53565b0692505b82156141085760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140f9575050611992565b50600194909401939182900391015b5b6020821061412a5780518455600190930192601f1990910190602001614109565b8115611992576000600019600884021c8554835182191691161785555050505050565b6000602061415c83601f6143f3565b6141669190615237565b61417090846143f3565b90505b8083101561086e5760008355600183019250614173565b600061419583614296565b801561096f575061096f83836142e2565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124ff573391505090565b606060006141ee8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161421457614214614f53565b04905060405193506020840160208202810160405281855260005b8281101561424f578451871c82529387019360209091019060010161422f565b50505050509392505050565b6000806117088561439a565b606083838360405160200161427e93929190615259565b60405160208183030381529060405290509392505050565b60006142c2827f01ffc9a7000000000000000000000000000000000000000000000000000000006142e2565b8015610de557506142db826001600160e01b03196142e2565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614383575060208210155b801561438f5750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c6128b4565b805160208083015191908110156143d7576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610de557610de56143dd565b60008083601f84011261441857600080fd5b50813567ffffffffffffffff81111561443057600080fd5b6020830191508360208260051b850101111561444b57600080fd5b9250929050565b803560ff811681146124ff57600080fd5b60008060008060006080868803121561447b57600080fd5b85359450602086013567ffffffffffffffff81111561449957600080fd5b6144a588828901614406565b90955093506144b8905060408701614452565b949793965091946060013592915050565b60005b838110156144e45781810151838201526020016144cc565b50506000910152565b600081518084526145058160208601602086016144c9565b601f01601f19169290920160200192915050565b60208152600061096f60208301846144ed565b60008083601f84011261453e57600080fd5b50813567ffffffffffffffff81111561455657600080fd5b60208301915083602082850101111561444b57600080fd5b6000806000806000806080878903121561458757600080fd5b86359550602087013567ffffffffffffffff808211156145a657600080fd5b6145b28a838b01614406565b90975095508591506145c660408a01614452565b945060608901359150808211156145dc57600080fd5b506145e989828a0161452c565b979a9699509497509295939492505050565b6000806000806060858703121561461157600080fd5b84359350602085013567ffffffffffffffff81111561462f57600080fd5b61463b87828801614406565b909450925061464e905060408601614452565b905092959194509250565b60008060008060008060008060a0898b03121561467557600080fd5b88359750602089013567ffffffffffffffff8082111561469457600080fd5b6146a08c838d01614406565b909950975060408b01359150808211156146b957600080fd5b6146c58c838d0161452c565b909750955060608b0135945060808b01359150808211156146e557600080fd5b506146f28b828c0161452c565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561472157600080fd5b87359650602088013567ffffffffffffffff8082111561474057600080fd5b61474c8b838c01614406565b909850965086915061476060408b01614452565b955060608a013591508082111561477657600080fd5b506147838a828b0161452c565b989b979a50959894979596608090950135949350505050565b6000602082840312156147ae57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147f4576147f46147b5565b604052919050565b600082601f83011261480d57600080fd5b813567ffffffffffffffff811115614827576148276147b5565b61483a6020601f19601f840116016147cb565b81815284602083860101111561484f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561487f57600080fd5b82359150602083013567ffffffffffffffff81111561489d57600080fd5b6148a9858286016147fc565b9150509250929050565b600080600080606085870312156148c957600080fd5b84359350602085013567ffffffffffffffff8111156148e757600080fd5b6148f387828801614406565b9598909750949560400135949350505050565b60608152600061491960608301866144ed565b846020840152828103604084015261099981856144ed565b600082601f83011261494257600080fd5b8135602067ffffffffffffffff82111561495e5761495e6147b5565b8160051b61496d8282016147cb565b928352848101820192828101908785111561498757600080fd5b83870192505b8483101561438f5782358252918301919083019061498d565b600080600080600060a086880312156149be57600080fd5b85359450602086013567ffffffffffffffff8111156149dc57600080fd5b6149e888828901614931565b9450506149f760408701614452565b94979396509394606081013594506080013592915050565b600080600060408486031215614a2457600080fd5b83359250602084013567ffffffffffffffff811115614a4257600080fd5b614a4e86828701614406565b9497909650939450505050565b6001600160a01b03811681146113ce57600080fd5b600080600060608486031215614a8557600080fd5b8335614a9081614a5b565b925060208401359150604084013567ffffffffffffffff811115614ab357600080fd5b614abf868287016147fc565b9150509250925092565b60008060008060808587031215614adf57600080fd5b84359350602085013567ffffffffffffffff811115614afd57600080fd5b614b0987828801614931565b935050614b1860408601614452565b9396929550929360600135925050565b600080600060608486031215614b3d57600080fd5b83359250602084013567ffffffffffffffff811115614b5b57600080fd5b614b6786828701614931565b925050614b7660408501614452565b90509250925092565b60008060408385031215614b9257600080fd5b8235614b9d81614a5b565b9150602083013567ffffffffffffffff81111561489d57600080fd5b60008060008060008060808789031215614bd257600080fd5b86359550602087013567ffffffffffffffff80821115614bf157600080fd5b614bfd8a838b01614406565b90975095506040890135915065ffffffffffff82168214614c1d57600080fd5b909350606088013590808211156145dc57600080fd5b803564ffffffffff811681146124ff57600080fd5b60008060008060008060008060c0898b031215614c6457600080fd5b88359750602089013567ffffffffffffffff80821115614c8357600080fd5b614c8f8c838d01614406565b9099509750879150614ca360408c01614452565b9650614cb160608c01614c33565b9550614cbf60808c01614c33565b945060a08b01359150808211156146e557600080fd5b600060208284031215614ce757600080fd5b813561096f81614a5b565b634e487b7160e01b600052603260045260246000fd5b604081526000614d1b60408301856144ed565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d4957614d496143dd565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b8560608301846144ed565b60ff8281168282160390811115610de557610de56143dd565b81810381811115610de557610de56143dd565b600060208284031215614db857600080fd5b8151801515811461096f57600080fd5b60008151808452602080850194506020840160005b83811015614df957815187529582019590820190600101614ddd565b509495945050505050565b606081526000614e176060830186614dc8565b65ffffffffffff85166020840152828103604084015261099981856144ed565b848152608060208201526000614e506080830186614dc8565b65ffffffffffff85166040840152828103606084015261438f81856144ed565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ed18160038601602089016144c9565b808401905081600382015284519150614ef18260048301602088016144c9565b0160040195945050505050565b8281526040602082015260006107ca60408301846144ed565b8281526000602080830184516020860160005b82811015614f4657815184529284019290840190600101614f2a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610de557610de56143dd565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b8560608301846144ed565b64ffffffffff818116838216019080821115614fdf57614fdf6143dd565b5092915050565b87815260e060208201526000614fff60e0830189614dc8565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261503681856144ed565b9a9950505050505050505050565b60c08152600061505760c0830189614dc8565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a0840152611be181856144ed565b6080815260006150a66080830187614dc8565b82810360208401526150b881876144ed565b9050846040840152828103606084015261438f81856144ed565b86815260c0602082015260006150eb60c0830188614dc8565b82810360408401526150fd81886144ed565b9050856060840152828103608084015261511781866144ed565b9150508260a0830152979650505050505050565b60208152600061096f6020830184614dc8565b8381526060602082015260006151576060830185614dc8565b9050826040830152949350505050565b8481526080602082015260006151806080830186614dc8565b60ff949094166040830152506060015292915050565b6000602082840312156151a857600080fd5b5051919050565b85815260a0602082015260006151c860a0830187614dc8565b60ff8616604084015282810360608401526151e381866144ed565b9150508260808301529695505050505050565b60608152600061520960608301866144ed565b60208301949094525060400152919050565b6000825161522d8184602087016144c9565b9190910192915050565b60008261525457634e487b7160e01b600052601260045260246000fd5b500490565b6000845161526b8184602089016144c9565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615828620000316000396000610bdb01526158286000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636548a90a116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b80636548a90a146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c75565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614cb4565b61032c565b005b610176610186366004614d30565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614e7d565b61042d565b6101d16101cc366004614ed6565b61044d565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614f1d565b6105a3565b604051601f19360135815260200161015a565b61017661021e366004614f75565b61071e565b6101d1610231366004614fb3565b61078a565b610176610244366004615016565b610865565b610176610257366004614cb4565b610927565b61017661026a366004615050565b610966565b61017661027d366004615050565b610998565b610176610290366004615069565b610a2d565b6101766102a33660046150a3565b610aed565b6101766102b6366004614f75565b610b06565b610193610bc7565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bd1565b6103458261034061041e565b610c35565b61034f8282610cae565b5050565b61035b610bd1565b600061036689610cd9565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610cf0565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615110565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e04565b6103f48861034061041e565b61041488888888610405888a615129565b61040f8789615129565b610e4f565b5050505050505050565b60006104286112b0565b905090565b610435610bd1565b61044861044061041e565b8484846112e2565b505050565b6000610457610bd1565b61737960f01b836001600160f01b031916146104b25761737960f01b8361047d85610cf0565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc939291906151af565b6104bb83610e04565b6104c78361034061041e565b60006104f06104d68560101b90565b71ffffffffffffffffffffffffffffffffffff191661133f565b9050600081846040516020016105079291906151d8565b604051602081830303815290604052905080805190602001209250600061052d846113c9565b90508015610573576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b84516020860120610585858883611479565b61058f8187611544565b6105998584611544565b5050505092915050565b6105ab610bd1565b61737960f01b836001600160f01b031916146105d15761737960f01b8361047d85610cf0565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b176105f581610e04565b6106018161034061041e565b61062b837fb5dee1270000000000000000000000000000000000000000000000000000000061160d565b600061063685610cd9565b6fffffffffffffffffffffffffffffffff191603610658578361038885610cf0565b600061066384611668565b905080158015906106745750848114155b156106b6576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b60006106c1866116ed565b90506001600160a01b038116156106ea576106db81611789565b6106e58382611808565b6106f5565b6106f58660016118a6565b610700868686611947565b61070a85876119ea565b61071683866001611a92565b505050505050565b610726610bd1565b610750827f1873396a0000000000000000000000000000000000000000000000000000000061160d565b610773616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e04565b61077f8361034061041e565b610448838383611b41565b6000610794610bd1565b60408051616e7360f01b602082015260006022820181905260308201526107d691016040516020818303038152906040526107ce90615230565b61034061041e565b8280519060200120905060008280519060200120905060006107f7836113c9565b9050801561083d576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319841660048201526024016103bc565b610848838784611479565b6108528285611544565b61085c8386611544565b50509392505050565b61086d610bd1565b610897827f6fdd1c800000000000000000000000000000000000000000000000000000000061160d565b6109136108a261041e565b600084846040516024016108b69190615254565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c04565b5061034f8282805190602001206001611c31565b61092f610bd1565b61093b8261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611ce0565b61096e610bd1565b61097781611df3565b61098081610e04565b61098c8161034061041e565b61099581611e24565b50565b6109a0610bd1565b6109a981611df3565b6109b281611e8f565b6109bb81612081565b156109fe57806109ca82610cf0565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615110565b610a098160016118a6565b610a1a81610a1561041e565b612106565b61099581610a2661041e565b6001611a92565b610a35610bd1565b610a3e83611df3565b610a47826121d0565b610a7d576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a898361034061041e565b6000610a94836116ed565b9050610ac0817f1a86b5500000000000000000000000000000000000000000000000000000000061160d565b610aca84846121ec565b815115610ae757610ae5610adc61041e565b8484600061226b565b505b50505050565b610af5610bd1565b610995610b0061041e565b8261227c565b610b0e610bd1565b61737960f01b836001600160f01b03191614610b345761737960f01b8361047d85610cf0565b610b5e827f540fbfa80000000000000000000000000000000000000000000000000000000061160d565b610b6783610e04565b610b8a616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e04565b610b968361034061041e565b610448836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761231e565b60006104286123c3565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c33576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c62616e7360f01b6dffffffffffffffffffffffffffff60801b8516176123cd565b6001600160a01b03161461034f57610c7982610cf0565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc929190615267565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611ce0565b6000610ce7607060106152a8565b9190911b919050565b606081601081901b6000610d0383610cd9565b90508271ffffffffffffffffffffffffffffffffffff19831615610d4457610d3f71ffffffffffffffffffffffffffffffffffff19841661133f565b610d7b565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610da257610d9d8361133f565b610dd9565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610deb939291906152bb565b6040516020818303038152906040529350505050919050565b610e0d81612081565b6109955780610e1b82610cf0565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615110565b613a3160f11b866001600160f01b03191614801590610e7d5750611bdd60f21b866001600160f01b03191614155b15610ede57613a3160f11b8687604051602001610e9c91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc9392916004016151af565b610ee78561245e565b610ef28460016126a5565b610efd8360006126a5565b60e084901c60e885901c0160ff16825114610f5d5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fbd5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110355760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61103e85612841565b61104784612841565b146110995761105585612841565b61105e84612841565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110a285612873565b6110ab84612873565b146110fd576110b985612873565b6110c284612873565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61110986612841565b8110156111a45761113361111d8583612890565b60c581111561112e5761112e615331565b6128b8565b6008601b8390030287901c60ff161461119c576008601b8290030286901c60ff1661116161111d8684612890565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b600101611100565b5060006111ce613a3160f11b6111ba8960101b90565b60101c6001600160f01b0319919091161790565b905060006111e5611bdd60f21b6111ba8a60101b90565b90506111f082612081565b806111ff57506111ff81612081565b1561125957878860405160200161121891815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615110565b6112a588888888886040516020016112719190615347565b604051602081830303815290604052886040516020016112919190615347565b604051602081830303815290604052612918565b6104148860016118a6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112df5750335b90565b6112ed8484846129df565b6112f6826121d0565b15610ae7576000611306836116ed565b9050611332817f1a86b5500000000000000000000000000000000000000000000000000000000061160d565b610716858484600061226b565b606060005b6010811015611395576fffffffffffffffffffffffffffffffff198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561139557600101611344565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611421576114216153c9565b602090810291909101015260006113c17f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a95565b60006114858383612acb565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106114e3576114e36153c9565b602090810291909101015261153b7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612b0a565b50505050505050565b6060600061155183612e10565b9050600061155e84612e20565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b7576115b76153c9565b60209081029190910101526107167f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612b0a565b6116178282612e49565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106116ad576116ad6153c9565b602090810291909101015260006113c17f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a95565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611726576117266153c9565b6020908102919091010152600061177e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a95565b60601c949350505050565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106117cb576117cb6153c9565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b612e65565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061183d5761183d6153c9565b602002602001018181525050816001600160a01b031660001b81600181518110611869576118696153c9565b60209081029190910101526104487f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b612e65565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106118dc576118dc6153c9565b6020026020010181815250506104487f746273746f72650000000000000000005265736f75726365496473000000000060001b8260008560405160200161192a91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b613131565b60006119538383613146565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611992576119926153c9565b602090810291909101015261153b7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612b0a565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611a2c57611a2c6153c9565b6020026020010181815250506104487f7462776f726c6400000000000000000053797374656d5265676973747279000060001b82600085604051602001611a7591815260200190565b60408051601f19818403018152919052630100080160dd1b613131565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611ac757611ac76153c9565b602002602001018181525050826001600160a01b031660001b81600181518110611af357611af36153c9565b602002602001018181525050610ae77f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161192a91151560f81b815260010190565b613a3160f11b836001600160f01b03191614611b7157613a3160f11b8384604051602001610e9c91815260200190565b611b7a83612081565b611bd3578283604051602001611b9291815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615110565b610448836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613176565b6060600080611c158787878761321b565b9150915081611c2757611c2781613293565b9695505050505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611c7257611c726153c9565b6020026020010181815250508281600181518110611c9257611c926153c9565b602002602001018181525050610ae77f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b8260008560405160200161192a91151560f81b815260010190565b6000611cec848461329b565b90506000815167ffffffffffffffff811115611d0a57611d0a614dc6565b604051908082528060200260200182016040528015611d33578160200160208202803683370190505b5090506000805b8351811015611de457846001600160a01b0316611d7e858381518110611d6257611d626153c9565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611ddc57838181518110611d9e57611d9e6153c9565b6020026020010151838381518110611db857611db86153c9565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d3a565b50808252610716868684613306565b616e7360f01b6dffffffffffffffffffffffffffff60801b821617811461099557616e7360f01b8161047d83610cf0565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611e5a57611e5a6153c9565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261335d565b6000611e9b8260101b90565b90506000611ebd71ffffffffffffffffffffffffffffffffffff19831661133f565b80519091508015610ae757611edf82611ed76001846153df565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611f70576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611f7e6001836153df565b811015610ae557602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561202b5750611fe683611ed78360016152a8565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b15612079576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611f73565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106120ba576120ba6153c9565b602090810291909101015260006120fa7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a95565b90506113c18160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061213c5761213c6153c9565b6020026020010181815250506104487f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b8260008560405160200161219b919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000613131565b6000811515801561032657506121e5826133f8565b1592915050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612222576122226153c9565b6020026020010181815250506104487f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b82600085604051602001611a7591815260200190565b6060600080611c1587878787613458565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122bd576122bd6153c9565b602002602001018181525050816001600160a01b031660001b816001815181106122e9576122e96153c9565b60209081029190910101526104487f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261335d565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612354576123546153c9565b6020026020010181815250506104487f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123af91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613628565b60006104286136d9565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110612406576124066153c9565b6020908102919091010152600061177e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a95565b80612495576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124a082612873565b905060058111156124e7576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b60006124f283612841565b9050600061250083836152a8565b9050601c811115612547576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156125f25760ff601b82900360080287901c16600081900361259f576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b60208111156125dd576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6125e781846152a8565b92505060010161254b565b506125fc85613718565b81146126485761260b85613718565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107165760ff601b82900360080287901c16801561269c576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161264a565b801580156126b1575081155b156126d25760405163d498615960e01b8152600060048201526024016103bc565b60006126dd83612873565b905060058111156127045760405163d498615960e01b8152600481018290526024016103bc565b600061270f84612841565b9050600061271d83836152a8565b9050601c8111156127445760405163d498615960e01b8152600481018290526024016103bc565b6000805b838110156127b057600061275f61111d8984612890565b90508060000361279b576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127a581846152a8565b925050600101612748565b506127ba86613718565b81146127e5576127c986613718565b60405163d498615960e01b81526004016103bc91815260200190565b825b8281101561153b5760006127fe61111d8984612890565b90508015612838576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016127e7565b600060086001612853600260206153df565b61285d91906153df565b61286791906153f2565b8260ff911c1692915050565b60006008600180612886600260206153df565b61285391906153df565b6000601b8290036008028360ff911c1660c58111156128b1576128b1615331565b9392505050565b6000808260c58111156128cd576128cd615331565b60ff16905060618110156128e757601f1660010192915050565b60618360c58111156128fb576128fb615331565b036129095750601492915050565b50600092915050565b50919050565b600061292586868661373b565b905060006129338484613771565b90506000612941858561378e565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061297b5761297b6153c9565b60209081029190910101526129d37f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612b0a565b50505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110612a2057612a206153c9565b602002602001018181525050826001600160a01b031660001b81600181518110612a4c57612a4c6153c9565b602002602001018181525050610ae77f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b82600085604051602001611a7591815260200190565b6000612ac2612aa486866137a3565b60ff858116601b0360080285901c16612abd85876137f9565b613832565b95945050505050565b60608282604051602001612af39291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b6357857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b569493929190615445565b60405180910390a2610716565b6000612b6e87613883565b905060005b8151811015612c47576000828281518110612b9057612b906153c9565b60200260200101519050612bbc6001826affffffffffffffffffffff191661390790919063ffffffff16565b15612c3e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612c0b908c908c908c908c908c908c90600401615484565b600060405180830381600087803b158015612c2557600080fd5b505af1158015612c39573d6000803e3d6000fd5b505050505b50600101612b73565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c7e9493929190615445565b60405180910390a26000612c9288886137a3565b90506000602087019050612caa826000895184613925565b6000612cb585612873565b1115612d39576000612cc78a8a6139e4565b878155905060208601915060008060005b612ce188612873565b8160ff161015612d3457612cf68d8d83613a3a565b9250612d118a8260ff166028026038011c64ffffffffff1690565b9150612d208360008488613925565b612d2a82866152a8565b9450600101612cd8565b505050505b60005b83518110156129d3576000848281518110612d5957612d596153c9565b60200260200101519050612d856002826affffffffffffffffffffff191661390790919063ffffffff16565b15612e07576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dd4908e908e908e908e908e908e90600401615484565b600060405180830381600087803b158015612dee57600080fd5b505af1158015612e02573d6000803e3d6000fd5b505050505b50600101612d3c565b60006103268251603881901b1790565b606081604051602001612e3391906154dd565b6040516020818303038152906040529050919050565b6000612e5483613aba565b80156128b157506128b18383613afb565b611bdd60f21b836001600160f01b03191603612eb857827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612eab91906154f9565b60405180910390a2505050565b6000612ec384613883565b905060005b8151811015612f96576000828281518110612ee557612ee56153c9565b60200260200101519050612f116040826affffffffffffffffffffff191661390790919063ffffffff16565b15612f8d576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f5a9089908990899060040161550c565b600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b505050505b50600101612ec8565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fc791906154f9565b60405180910390a26000612fdb85856137a3565b9050613034816000612fec86613718565b67ffffffffffffffff81111561300457613004614dc6565b6040519080825280601f01601f19166020018201604052801561302e576020820181803683370190505b50613bb3565b600061303f84612873565b111561306057600061305186866139e4565b905061305e816020613bc9565b505b60005b8251811015610716576000838281518110613080576130806153c9565b602002602001015190506130ac6080826affffffffffffffffffffff191661390790919063ffffffff16565b15613128576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130f5908a908a908a9060040161550c565b600060405180830381600087803b15801561310f57600080fd5b505af1158015613123573d6000803e3d6000fd5b505050505b50600101613063565b610ae5858561314084876137f9565b85613c06565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612af3565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106131ac576131ac6153c9565b6020026020010181815250506104487f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b8260008560405160200161320791906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613e6e565b60006060836001600160a01b03166000613236858989613ea9565b60405161324391906154dd565b60006040518083038185875af1925050503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b606091505b509097909650945050505050565b805160208201fd5b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106132d5576132d56153c9565b60200260200101818152505060006132ef85836000613ec0565b9050612ac26133018260008451613efa565b613f88565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061333c5761333c6153c9565b602002602001018181525050610ae78482600061335886613f99565b613fa9565b60006133676136d9565b9050306001600160a01b03821603613383576104488383613fe4565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906133ca9086908690600401615535565b600060405180830381600087803b1580156133e457600080fd5b505af115801561153b573d6000803e3d6000fd5b6040805161737960f01b60208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261345090615230565b909114919050565b60006060600061346786613ff7565b905060005b815181101561353a576000828281518110613489576134896153c9565b602002602001015190506134b56001826affffffffffffffffffffff191661390790919063ffffffff16565b15613531576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906134fe908c908c908c9060040161554e565b600060405180830381600087803b15801561351857600080fd5b505af115801561352c573d6000803e3d6000fd5b505050505b5060010161346c565b5061354787858888614069565b909350915060005b815181101561361d57600082828151811061356c5761356c6153c9565b602002602001015190506135986002826affffffffffffffffffffff191661390790919063ffffffff16565b15613614576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906135e1908c908c908c9060040161554e565b600060405180830381600087803b1580156135fb57600080fd5b505af115801561360f573d6000803e3d6000fd5b505050505b5060010161354f565b505094509492505050565b60006136326136d9565b9050306001600160a01b038216036136555761365085858585613e6e565b610ae5565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f3262906136a0908890889088908890600401615576565b600060405180830381600087803b1580156136ba57600080fd5b505af11580156136ce573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613713573391505090565b919050565b60006008613728600260206153df565b61373291906153f2565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b1565b60608282604051602001612af39291906155aa565b600082826040516020016137b89291906155d9565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561382a5761382060ff601b83900360080287901c16836152a8565b91506001016137fe565b509392505050565b6000602082106138585760208204840193506020828161385457613854615615565b0691505b508254600882021b60208290038084111561382a576001850154600882021c82179150509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106138bd576138bd6153c9565b602090810291909101015260006138f57f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613ec0565b90506113c16133018260008451613efa565b60008160ff16826139188560581c90565b1660ff1614905092915050565b821561399f576020831061394f5760208304840193506020838161394b5761394b615615565b0692505b821561399f5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613990575050610ae7565b50600194909401939182900391015b5b602082106139c15780518455600190930192601f19909101906020016139a0565b8115610ae7576000600019600884021c8554835182191691161785555050505050565b600082826040516020016139f99291906155d9565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613a4f9291906155d9565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613ae6827f01ffc9a700000000000000000000000000000000000000000000000000000000613afb565b801561032657506121e5826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b9c575060208210155b8015613ba85750600081115b979650505050505050565b61044883838351613bc48560200190565b613925565b60006020613bd883601f6152a8565b613be2919061562b565b613bec90846152a8565b90505b808310156104485760008355600183019250613bef565b611bdd60f21b846001600160f01b03191603613c5d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051613c509392919061564d565b60405180910390a2610ae7565b6000613c6985856137a3565b90506000613c7686613883565b905060005b8151811015613d4b576000828281518110613c9857613c986153c9565b60200260200101519050613cc46004826affffffffffffffffffffff191661390790919063ffffffff16565b15613d42576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613d0f908b908b908b908b90600401615680565b600060405180830381600087803b158015613d2957600080fd5b505af1158015613d3d573d6000803e3d6000fd5b505050505b50600101613c7b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051613d809392919061564d565b60405180910390a2613d9b828565ffffffffffff1685613bb3565b60005b815181101561153b576000828281518110613dbb57613dbb6153c9565b60200260200101519050613de76008826affffffffffffffffffffff191661390790919063ffffffff16565b15613e65576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613e32908b908b908b908b90600401615680565b600060405180830381600087803b158015613e4c57600080fd5b505af1158015613e60573d6000803e3d6000fd5b505050505b50600101613d9e565b6000613e7a858561413b565b90506000613e97828560ff166028026038011c64ffffffffff1690565b9050610716868686846000888861414e565b6060838383604051602001613759939291906156b9565b60606113c1613ed0858585613a3a565b6000613ef585613ee0898961413b565b9060ff166028026038011c64ffffffffff1690565b6144f8565b600081831180613f0a5750835182115b15613f47578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc939291906156f8565b60208401613f5584826152a8565b90506000613f6385856153df565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b1836015600061451b565b6060816128b18160156000614596565b6000613fb5858561413b565b90506000613fd2828560ff166028026038011c64ffffffffff1690565b9050610716868686600085888861414e565b61034f8282613ff2856145ea565b612e65565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110614031576140316153c9565b602090810291909101015260006138f57f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613ec0565b600060606000806140798661466f565b90925090506001600160a01b0382166140965785610e1b87610cf0565b806140a5576140a58689614727565b86156140e9576dffffffffffffffffffffffffffff60801b8616616e7360f01b1760006140d18261473e565b90506140e6826140e18b846152a8565b6147b7565b50505b60006140f58760101b90565b71ffffffffffffffffffffffffffffffffffff1916146141205761411b8888848861321b565b61412c565b61412c88888488614836565b90999098509650505050505050565b60006128b161414a84846139e4565b5490565b613a3160f11b876001600160f01b0319161461417e57613a3160f11b8788604051602001610e9c91815260200190565b6000614199828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836141b291906153df565b6141bc91906152a8565b90508082141580156141de5750816141d4868861571d565b64ffffffffff1614155b1561422e576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561427f576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061428c848984614897565b905060006142998b613883565b905060005b81518110156143645760008282815181106142bb576142bb6153c9565b602002602001015190506142e76010826affffffffffffffffffffff191661390790919063ffffffff16565b1561435b57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016143289796959493929190615742565b600060405180830381600087803b15801561434257600080fd5b505af1158015614356573d6000803e3d6000fd5b505050505b5060010161429e565b5064ffffffffff881660005b8a60ff168160ff1610156143a357614397878260ff166028026038011c64ffffffffff1690565b90910190600101614370565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d6040516143de969594939291906157a0565b60405180910390a2508284146143ff5760006143fa8c8c6139e4565b839055505b600061440c8c8c8c613a3a565b9050614420818a64ffffffffff1689613bb3565b5060005b81518110156144ea576000828281518110614441576144416153c9565b6020026020010151905061446d6020826affffffffffffffffffffff191661390790919063ffffffff16565b156144e157606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016144ae9796959493929190615742565b600060405180830381600087803b1580156144c857600080fd5b505af11580156144dc573d6000803e3d6000fd5b505050505b50600101614424565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261382a85858584614965565b606060006145298560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161454f5761454f615615565b04905060405193506020840160208202810160405281855260005b8281101561458a578451871c82529387019360209091019060010161456a565b50505050509392505050565b825160609060006145a785836153f2565b9050604051925060208301601f19603f83860101166040528184526000602088015b8482101561458a578051871b835291870191600191909101906020016145c9565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161463957507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266146667f746273746f72650000000000000000005461626c65730000000000000000000084614a31565b60206000613832565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106146a9576146a96153c9565b6020908102919091010152600080806147027f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000614a4d565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6147318282614b55565b61034f57610c7982610cf0565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614777576147776153c9565b602090810291909101015260006113c17f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a95565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106147ed576147ed6153c9565b6020026020010181815250506104487f7462776f726c6400000000000000000042616c616e636573000000000000000060001b82600085604051602001611a7591815260200190565b60006060836001600160a01b031661484f848888613ea9565b60405161485c91906154dd565b600060405180830381855af49150503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b600064ffffffffff8211156148db576040517f7149a3c1000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061490d5780850382019150614915565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156149ec576020831061498f5760208304840193506020838161498b5761498b615615565b0692505b82156149ec5760208390036000818410156149b25750600019600884021c6149bc565b50600019600882021c5b8554600886021b8184511682198216178452508184116149dd575050610ae7565b50600194909401939182900391015b5b60208210614a0e5783548152600190930192601f19909101906020016149ed565b8115610ae7576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016137b8565b6060600060606000614a5e85613718565b9050614a6b878783614b8b565b93506000614a7886612873565b90508015614b4a57614a8a888861413b565b935066ffffffffffffff841667ffffffffffffffff811115614aae57614aae614dc6565b6040519080825280601f01601f191660200182016040528015614ad8576020820181803683370190505b5092506020830160005b828160ff161015614b47576000614afa8b8b84613a3a565b90506000614b17888460ff166028026038011c64ffffffffff1690565b9050614b268260008387614965565b614b3081856152a8565b935050508080614b3f906157fc565b915050614ae2565b50505b505093509350939050565b6000614b7b616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614bc4565b806128b157506128b18383614bc4565b606081600003614baa57506040805160208101909152600081526128b1565b6000614bb685856137a3565b9050612ac2816000856144f8565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614bfd57614bfd6153c9565b602002602001018181525050826001600160a01b031660001b81600181518110614c2957614c296153c9565b60209081029190910101526000614c697f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a95565b9050612ac28160f81c90565b600060208284031215614c8757600080fd5b81356001600160e01b0319811681146128b157600080fd5b6001600160a01b038116811461099557600080fd5b60008060408385031215614cc757600080fd5b823591506020830135614cd981614c9f565b809150509250929050565b60008083601f840112614cf657600080fd5b50813567ffffffffffffffff811115614d0e57600080fd5b6020830191508360208260051b8501011115614d2957600080fd5b9250929050565b60008060008060008060008060c0898b031215614d4c57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614d8057600080fd5b614d8c8c838d01614ce4565b909650945060a08b0135915080821115614da557600080fd5b50614db28b828c01614ce4565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614e0557614e05614dc6565b604052919050565b600082601f830112614e1e57600080fd5b813567ffffffffffffffff811115614e3857614e38614dc6565b614e4b6020601f19601f84011601614ddc565b818152846020838601011115614e6057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e9257600080fd5b8335614e9d81614c9f565b925060208401359150604084013567ffffffffffffffff811115614ec057600080fd5b614ecc86828701614e0d565b9150509250925092565b60008060408385031215614ee957600080fd5b82359150602083013567ffffffffffffffff811115614f0757600080fd5b614f1385828601614e0d565b9150509250929050565b600080600060608486031215614f3257600080fd5b833592506020840135614f4481614c9f565b915060408401358015158114614f5957600080fd5b809150509250925092565b803560ff8116811461371357600080fd5b600080600060608486031215614f8a57600080fd5b833592506020840135614f9c81614c9f565b9150614faa60408501614f64565b90509250925092565b600080600060608486031215614fc857600080fd5b83359250602084013567ffffffffffffffff80821115614fe757600080fd5b614ff387838801614e0d565b9350604086013591508082111561500957600080fd5b50614ecc86828701614e0d565b6000806040838503121561502957600080fd5b823561503481614c9f565b9150602083013567ffffffffffffffff811115614f0757600080fd5b60006020828403121561506257600080fd5b5035919050565b60008060006060848603121561507e57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ec057600080fd5b6000602082840312156150b557600080fd5b81356128b181614c9f565b60005b838110156150db5781810151838201526020016150c3565b50506000910152565b600081518084526150fc8160208601602086016150c0565b601f01601f19169290920160200192915050565b8281526040602082015260006113c160408301846150e4565b600067ffffffffffffffff8084111561514457615144614dc6565b8360051b602061515660208301614ddc565b8681529185019160208101903684111561516f57600080fd5b865b848110156151a3578035868111156151895760008081fd5b61519536828b01614e0d565b845250918301918301615171565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ac260608301846150e4565b600083516151ea8184602088016150c0565b7f5f5f00000000000000000000000000000000000000000000000000000000000090830190815283516152248160028401602088016150c0565b01600201949350505050565b805160208083015191908110156129125760001960209190910360031b1b16919050565b6020815260006128b160208301846150e4565b60408152600061527a60408301856150e4565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561032657610326615292565b6001600160f01b03198416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516153048160038601602089016150c0565b8084019050816003820152845191506153248260048301602088016150c0565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156153bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526153aa8583516150e4565b94509285019290850190600101615370565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b8181038181111561032657610326615292565b808202811582820484141761032657610326615292565b60008151808452602080850194506020840160005b8381101561543a5781518752958201959082019060010161541e565b509495945050505050565b6080815260006154586080830187615409565b828103602084015261546a81876150e4565b90508460408401528281036060840152613ba881856150e4565b86815260c06020820152600061549d60c0830188615409565b82810360408401526154af81886150e4565b905085606084015282810360808401526154c981866150e4565b9150508260a0830152979650505050505050565b600082516154ef8184602087016150c0565b9190910192915050565b6020815260006128b16020830184615409565b8381526060602082015260006155256060830185615409565b9050826040830152949350505050565b8281526040602082015260006113c16040830184615409565b6001600160a01b0384168152826020820152606060408201526000612ac260608301846150e4565b84815260806020820152600061558f6080830186615409565b60ff851660408401528281036060840152613ba881856150e4565b600083516155bc8184602088016150c0565b8351908301906155d08183602088016150c0565b01949350505050565b8281526000602080830184516020860160005b82811015615608578151845292840192908401906001016155ec565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261564857634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006156606060830186615409565b65ffffffffffff851660208401528281036040840152611c2781856150e4565b8481526080602082015260006156996080830186615409565b65ffffffffffff851660408401528281036060840152613ba881856150e4565b600084516156cb8184602089016150c0565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b60608152600061570b60608301866150e4565b60208301949094525060400152919050565b64ffffffffff81811683821601908082111561573b5761573b615292565b5092915050565b87815260e06020820152600061575b60e0830189615409565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261579281856150e4565b9a9950505050505050505050565b60c0815260006157b360c0830189615409565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a08401526157ef81856150e4565b9998505050505050505050565b600060ff821660ff810361581257615812615292565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b506040516200490d3803806200490d833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e051610100516147df6200012e60003960008181610701015281816113df01526115530152600061069901526000610631015260006105b00152600050506147df6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004613fb3565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461400b565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461400b565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610943565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b61029461094d565b61029c610bf5565b6102a4610c76565b6102ac610cda565b6102b4610d56565b6102bc610dba565b6102c4610df7565b6102cc610e73565b6102d4610eef565b6102dc610f83565b6102e4611013565b6102ec61108b565b6102f46110ef565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906140bc565b600161115d565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906140bc565b6103796101f4565b611203565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906140bc565b6103c16101f4565b60016112e0565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906140bc565b6113a2565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600061073161145f565b905060005b60048110156107bc576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107b49101604051602081830303815290604052610798906140bc565b8383600481106107aa576107aa6140e0565b6020020151611544565b600101610736565b5060006107c76115e4565b905060005b6002811015610849576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261084191015b60405160208183030381529060405261082f906140bc565b8383600281106107aa576107aa6140e0565b6001016107cc565b506000610854611635565b905060005b60028110156108b0576040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526108a89101610817565b600101610859565b5060006108bb6116a3565b905060005b600e81101561093c576040805161737960f01b6020820152600060228201527f526567697374726174696f6e000000000000000000000000000000000000000060308201526109349101604051602081830303815290604052610922906140bc565b8383600e81106107aa576107aa6140e0565b6001016108c0565b5050505050565b60006101fe6118b4565b6109767f746273746f72650000000000000000005461626c657300000000000000000000611900565b156109f457604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526109eb9291600401614146565b60405180910390fd5b610a1d7f746273746f72650000000000000000005265736f757263654964730000000000611900565b15610a5557604080517f746273746f72650000000000000000005265736f7572636549647300000000006020820181905291016109aa565b610b147f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000632001005f60d81b7e6003025f5f5fc4c40000000000000000000000000000000000000000000000610ac961198d565b604051602001610ad991906141b9565b604051602081830303815290604052610af0611a12565b604051602001610b0091906141b9565b604051602081830303815290604052611bda565b610b977f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b632001005f60d81b7e01010060000000000000000000000000000000000000000000000000000000610b70611ca1565b604051602001610b8091906141b9565b604051602081830303815290604052610af0611d18565b610bc27f746273746f72650000000000000000005461626c657300000000000000000000600161115d565b610bed7f746273746f72650000000000000000005265736f757263654964730000000000600161115d565b61056c611d8f565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000632001005f60d81b7e14010061000000000000000000000000000000000000000000000000000000610c69611e07565b610c71611e7e565b611ef5565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b632001005f60d81b7e2001001f000000000000000000000000000000000000000000000000000000610cd2611e07565b610c71611fc9565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b7e340200615f00000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610d4e612040565b610c7161210a565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b7e28020061610000000000000000000000000000000000000000000000000000632001005f60d81b610db2612181565b610c7161224b565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b632001005f60d81b80610db2611e07565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b7e3402005f6100000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610e6b6122c2565b610c7161238c565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e15020014010000000000000000000000000000000000000000000000000000632001005f60d81b7e15020061600000000000000000000000000000000000000000000000000000610ee7612403565b610c7161247a565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007e2402005f430000000000000000000000000000000000000000000000000000610f7b612544565b610c716125bb565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c01000000000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007c01c500000000000000000000000000000000000000000000000000000061100b612685565b610c716126fc565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611083612403565b610c71612773565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b7e14010061000000000000000000000000000000000000000000000000000000632001005f60d81b6110e76127ea565b610c71612403565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000060007e14010061000000000000000000000000000000000000000000000000000000611083612861565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611193576111936140e0565b6020026020010181815250506111fe7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016111e191151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612894565b505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611239576112396140e0565b6020026020010181815250506111fe7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016112ab919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612894565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611315576113156140e0565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061134e5761134e6140e0565b60200260200101818152505061139c7f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016111e191151560f81b815260010190565b50505050565b6111fe6113ad6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a9000000000000000000000000000000000000000000000000000000001790526128a9565b611467613f58565b60405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c616464726573732900000081525081526020016040518060600160405280602281526020016147b16022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905090565b6111fe61154f6101f4565b60007f0000000000000000000000000000000000000000000000000000000000000000858586604051602401611587939291906141cc565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6548a90a000000000000000000000000000000000000000000000000000000001790526128a9565b6115ec613f7f565b6040518060400160405280604051806060016040528060338152602001614755603391398152602001604051806060016040528060318152602001614624603191399052919050565b61163d613f7f565b60405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d290000000081525081526020016040518060600160405280602881526020016146b0602891399052919050565b6116ab613f98565b604051806101c001604052806040518060400160405280601c81526020017f696e7374616c6c4d6f64756c6528616464726573732c62797465732900000000815250815260200160405180606001604052806040815260200161456f60409139815260200160405180606001604052806028815260200161465560289139815260200160405180606001604052806024815260200161454b6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d65737061636528627974657333322900000000000081525081526020016040518060600160405280602981526020016147886029913981526020016040518060600160405280602581526020016146d86025913981526020016040518060600160405280602481526020016146006024913981526020016040518060600160405280602881526020016145d860289139815260200160405180606001604052806033815260200161467d6033913981526020016040518060600160405280602981526020016145af6029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e28616464726573732900000081525081526020016040518060600160405280603281526020016147236032913981526020016040518060600160405280602681526020016146fd602691399052919050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806118fb573391505090565b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611939576119396140e0565b602090810291909101015260006119797f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b6128d6565b90506119858160f81c90565b949350505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816119a45790505090506040518060400160405280600781526020017f7461626c6549640000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a2a5790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a8a57611a8a6140e0565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ade57611ade6140e0565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b3257611b326140e0565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b8657611b866140e0565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110611a0457611a046140e0565b6000611be786868661290c565b90506000611bf58484612942565b90506000611c038585612962565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c3d57611c3d6140e0565b6020908102919091010152611c957f746273746f72650000000000000000005461626c657300000000000000000000828686867e6003022020200000000000000000000000000000000000000000000000000061298e565b50505050505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cb85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d2f5790505090506040518060400160405280600681526020017f657869737473000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611dff61198d565b610c71612cb4565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e1e5790505090506040518060400160405280600b81526020017f6e616d657370616365496400000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e955790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6000611eff6118b4565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f3157611f2c878787878787612d2b565b611fc0565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611f8d908a908a908a908a908a908a906004016141f7565b600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050505b50505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611fe05790505090506040518060400160405280600781526020017f62616c616e63650000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816120565790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106120b6576120b66140e0565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e7473486173680000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816121215790505090506040518060400160405280600b81526020017f6973496e7374616c6c656400000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816121975790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106121f7576121f76140e0565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816122625790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c49640000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816122d85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110612338576123386140e0565b60200260200101819052506040518060400160405280600681526020017f63616c6c6572000000000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816123a35790505090506040518060400160405280600681526020017f616363657373000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161241a5790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816124905790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106124f0576124f06140e0565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161255b5790505090506040518060400160405280601581526020017f776f726c6446756e6374696f6e53656c6563746f72000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160028082526060828101909352816020015b60608152602001906001900390816125d15790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110612631576126316140e0565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600181518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161269c5790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f720000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816127135790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e617475726500000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b606081526020019060019003908161278a5790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816128015790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b6040805160008082526020820190925260609161288e565b60608152602001906001900390816128795790505b50905090565b61093c85856128a384876131da565b85613213565b60606000806128ba87878787613493565b91509150816128cc576128cc81613514565b9695505050505050565b60006129036128e5868661351c565b60ff858116601b0360080285901c166128fe85876131da565b613572565b95945050505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612977929190614241565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff00000000000000000000000000000000000000000000000000000000000016036129ff57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516129f294939291906142ac565b60405180910390a2612cac565b6000612a0a876135c3565b905060005b8151811015612ae3576000828281518110612a2c57612a2c6140e0565b60200260200101519050612a586001826affffffffffffffffffffff191661364c90919063ffffffff16565b15612ada576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612aa7908c908c908c908c908c908c906004016142f6565b600060405180830381600087803b158015612ac157600080fd5b505af1158015612ad5573d6000803e3d6000fd5b505050505b50600101612a0f565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612b1a94939291906142ac565b60405180910390a26000612b2e888861351c565b90506000602087019050612b4682600089518461366a565b6000612b5185613729565b1115612bd5576000612b638a8a613766565b878155905060208601915060008060005b612b7d88613729565b8160ff161015612bd057612b928d8d836137bc565b9250612bad8a8260ff166028026038011c64ffffffffff1690565b9150612bbc836000848861366a565b612bc68286614365565b9450600101612b74565b505050505b60005b8351811015611c95576000848281518110612bf557612bf56140e0565b60200260200101519050612c216002826affffffffffffffffffffff191661364c90919063ffffffff16565b15612ca3576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612c70908e908e908e908e908e908e906004016142f6565b600060405180830381600087803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b505050505b50600101612bd8565b505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ccb5790505090506040518060400160405280600581526020017f686f6f6b7300000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140e0565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614801590612da45750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e20577f74620000000000000000000000000000000000000000000000000000000000008687604051602001612dde91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526109eb939291600401614378565b612e298561383c565b612e34846001613a83565b612e3f836000613a83565b60e084901c60e885901c0160ff16825114612e9f5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff16815114612eff5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f775760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b612f8085613c1f565b612f8984613c1f565b14612fdb57612f9785613c1f565b612fa084613c1f565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b612fe485613729565b612fed84613729565b1461303f57612ffb85613729565b61300484613729565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60005b61304b86613c1f565b8110156130e65761307561305f8583613c31565b60c5811115613070576130706143b9565b613c52565b6008601b8390030287901c60ff16146130de576008601b8290030286901c60ff166130a361305f8684613c31565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b600101613042565b5060006131437f74620000000000000000000000000000000000000000000000000000000000006131178960101b90565b60101c7fffff000000000000000000000000000000000000000000000000000000000000919091161790565b9050600061315a611bdd60f21b6131178a60101b90565b905061316582611900565b80613174575061317481611900565b1561318d5787886040516020016109aa91815260200190565b6131c588888888886040516020016131a591906141b9565b60405160208183030381529060405288604051602001610b0091906141b9565b6131d088600161115d565b5050505050505050565b600080805b8360ff1681101561320b5761320160ff601b83900360080287901c1683614365565b91506001016131df565b509392505050565b611bdd60f21b847fffff000000000000000000000000000000000000000000000000000000000000160361328257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051613275939291906143cf565b60405180910390a261139c565b600061328e858561351c565b9050600061329b866135c3565b905060005b81518110156133705760008282815181106132bd576132bd6140e0565b602002602001015190506132e96004826affffffffffffffffffffff191661364c90919063ffffffff16565b15613367576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613334908b908b908b908b90600401614402565b600060405180830381600087803b15801561334e57600080fd5b505af1158015613362573d6000803e3d6000fd5b505050505b506001016132a0565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516133a5939291906143cf565b60405180910390a26133c0828565ffffffffffff1685613cb2565b60005b8151811015611fc05760008282815181106133e0576133e06140e0565b6020026020010151905061340c6008826affffffffffffffffffffff191661364c90919063ffffffff16565b1561348a576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613457908b908b908b908b90600401614402565b600060405180830381600087803b15801561347157600080fd5b505af1158015613485573d6000803e3d6000fd5b505050505b506001016133c3565b600060608373ffffffffffffffffffffffffffffffffffffffff166134b9848888613cc8565b6040516134c6919061443b565b600060405180830381855af49150503d8060008114613501576040519150601f19603f3d011682016040523d82523d6000602084013e613506565b606091505b509097909650945050505050565b805160208201fd5b60008282604051602001613531929190614457565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000602082106135985760208204840193506020828161359457613594614493565b0691505b508254600882021b60208290038084111561320b576001850154600882021c82179150509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106135fd576135fd6140e0565b602090810291909101015260006136357f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613cdf565b90506119856136478260008451613d19565b613da7565b60008160ff168261365d8560581c90565b1660ff1614905092915050565b82156136e457602083106136945760208304840193506020838161369057613690614493565b0692505b82156136e45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116136d557505061139c565b50600194909401939182900391015b5b602082106137065780518455600190930192601f19909101906020016136e5565b811561139c576000600019600884021c8554835182191691161785555050505050565b6000600860018061373c600260206144a9565b61374691906144a9565b61375091906144a9565b61375a91906144bc565b8260ff911c1692915050565b6000828260405160200161377b929190614457565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016137d1929190614457565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613873576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061387e82613729565b905060058111156138c5576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016109eb565b60006138d083613c1f565b905060006138de8383614365565b9050601c811115613925576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016109eb565b6000805b838110156139d05760ff601b82900360080287901c16600081900361397d576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b60208111156139bb576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b6139c58184614365565b925050600101613929565b506139da85613db8565b8114613a26576139e985613db8565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109eb565b825b601c811015612cac5760ff601b82900360080287901c168015613a7a576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b50600101613a28565b80158015613a8f575081155b15613ab05760405163d498615960e01b8152600060048201526024016109eb565b6000613abb83613729565b90506005811115613ae25760405163d498615960e01b8152600481018290526024016109eb565b6000613aed84613c1f565b90506000613afb8383614365565b9050601c811115613b225760405163d498615960e01b8152600481018290526024016109eb565b6000805b83811015613b8e576000613b3d61305f8984613c31565b905080600003613b79576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b838184614365565b925050600101613b26565b50613b9886613db8565b8114613bc357613ba786613db8565b60405163d498615960e01b81526004016109eb91815260200190565b825b82811015611fc0576000613bdc61305f8984613c31565b90508015613c16576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101613bc5565b600060086001613746600260206144a9565b6000601b8290036008028360ff911c1660c581111561295b5761295b6143b9565b6000808260c5811115613c6757613c676143b9565b60ff1690506061811015613c8157601f1660010192915050565b60618360c5811115613c9557613c956143b9565b03613ca35750601492915050565b50600092915050565b50919050565b6111fe83838351613cc38560200190565b61366a565b606083838360405160200161292a939291906144d3565b6060611985613cef8585856137bc565b6000613d1485613cff8989613ddb565b9060ff166028026038011c64ffffffffff1690565b613dee565b600081831180613d295750835182115b15613d66578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016109eb93929190614525565b60208401613d748482614365565b90506000613d8285856144a9565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061295b8360156000613e11565b60006008613dc8600260206144a9565b613dd291906144bc565b9190911c919050565b600061295b613dea8484613766565b5490565b60405160208101601f19603f848401011660405282825261320b85858584613e8c565b60606000613e1f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281613e4557613e45614493565b04905060405193506020840160208202810160405281855260005b82811015613e80578451871c825293870193602090910190600101613e60565b50505050509392505050565b8215613f135760208310613eb657602083048401935060208381613eb257613eb2614493565b0692505b8215613f13576020839003600081841015613ed95750600019600884021c613ee3565b50600019600882021c5b8554600886021b818451168219821617845250818411613f0457505061139c565b50600194909401939182900391015b5b60208210613f355783548152600190930192601f1990910190602001613f14565b811561139c576000600019600884021c8251865482191691161782525050505050565b60405180608001604052806004905b6060815260200190600190039081613f675790505090565b6040805180820190915260608152600160208201613f67565b604080516101c0810190915260608152600d60208201613f67565b600060208284031215613fc557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461295b57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561401d57600080fd5b813567ffffffffffffffff8082111561403557600080fd5b818401915084601f83011261404957600080fd5b81358181111561405b5761405b613ff5565b604051601f8201601f19908116603f0116810190838211818310171561408357614083613ff5565b8160405282815287602084870101111561409c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613cac5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b838110156141115781810151838201526020016140f9565b50506000910152565b600081518084526141328160208601602086016140f6565b601f01601f19169290920160200192915050565b828152604060208201526000611985604083018461411a565b60008282518085526020808601955060208260051b8401016020860160005b848110156141ac57601f1986840301895261419a83835161411a565b9884019892509083019060010161417e565b5090979650505050505050565b60208152600061295b602083018461415f565b8381526060602082015260006141e5606083018561411a565b82810360408401526128cc818561411a565b86815285602082015284604082015283606082015260c06080820152600061422260c083018561415f565b82810360a0840152614234818561415f565b9998505050505050505050565b600083516142538184602088016140f6565b8351908301906142678183602088016140f6565b01949350505050565b60008151808452602080850194506020840160005b838110156142a157815187529582019590820190600101614285565b509495945050505050565b6080815260006142bf6080830187614270565b82810360208401526142d1818761411a565b905084604084015282810360608401526142eb818561411a565b979650505050505050565b86815260c06020820152600061430f60c0830188614270565b8281036040840152614321818861411a565b9050856060840152828103608084015261433b818661411a565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee61434f565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612903606083018461411a565b634e487b7160e01b600052602160045260246000fd5b6060815260006143e26060830186614270565b65ffffffffffff8516602084015282810360408401526128cc818561411a565b84815260806020820152600061441b6080830186614270565b65ffffffffffff8516604084015282810360608401526142eb818561411a565b6000825161444d8184602087016140f6565b9190910192915050565b8281526000602080830184516020860160005b828110156144865781518452928401929084019060010161446a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b818103818111156101ee576101ee61434f565b80820281158282048414176101ee576101ee61434f565b600084516144e58184602089016140f6565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b606081526000614538606083018661411a565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c737472696e6729626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9746273746f72650000000000000000005265736f757263654964730000000000a164736f6c6343000818000a","sourceMap":"11533:179:145:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2223:107;;;:::i;:::-;;6865:448;;;;;;:::i;:::-;;:::i;4922:470::-;;;:::i;3485:348::-;;;:::i;2170:134:108:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11314:162:145;;;:::i;9844:517::-;;;;;;:::i;:::-;;:::i;5561:280::-;;;:::i;2939:133:108:-;;;:::i;2640:141::-;;;:::i;8038:956:145:-;;;;;;:::i;:::-;;:::i;2622:146::-;;;:::i;2334:79::-;;;:::i;2456:178:108:-;;;:::i;:::-;;;;;;;:::i;4307:611:145:-;;;:::i;6212:350::-;;;:::i;10365:534::-;;;;;;:::i;:::-;;:::i;2310:140:108:-;;;:::i;:::-;;;;;;;:::i;2787:146::-;;;:::i;2772:324:145:-;;;:::i;7518:516::-;;;;;;:::i;:::-;;:::i;1875:141:108:-;;;:::i;1819:584:102:-;;;:::i;:::-;;;5563:14:150;;5556:22;5538:41;;5526:2;5511:18;1819:584:102;5398:187:150;8998:405:145;;;;;;:::i;:::-;;:::i;3837:466::-;;;:::i;3100:381::-;;;:::i;2022:142:108:-;;;:::i;9407:433:145:-;;;;;;:::i;:::-;;:::i;6566:295::-;;;;;;:::i;:::-;;:::i;5845:363::-;;;:::i;5396:161::-;;;:::i;1572:26:102:-;;;;;;;;;7317:197:145;;;;;;:::i;:::-;;:::i;2223:107::-;2261:13;:11;:13::i;:::-;2253:5;:21;;;;-1:-1:-1;;;;;2253:21:145;;;;;;;;;2308:16;;;;;;;;2280:45;;2253:21;2308:14;;:16;;;;;;;;;;;;;;2253:21;2308:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1066:42:28;2374:38;;;;-1:-1:-1;;;;;2374:38:28;;;;;;;;;;2311:106;2280:45:145;2223:107::o;6865:448::-;6950:29;;-1:-1:-1;;;6950:29:145;;-1:-1:-1;;;;;6960:18:145;;;;6950:29;;;5538:41:150;6950:9:145;;;;5511:18:150;;6950:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6985:35:145;;-1:-1:-1;;;6985:35:145;;6995:24;;;;6985:35;;;5538:41:150;6985:9:145;;-1:-1:-1;6985:9:145;;-1:-1:-1;5511:18:150;;6985:35:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7027:5:145;;:30;;-1:-1:-1;;;7027:30:145;;-1:-1:-1;;;;;6038:55:150;;;7027:30:145;;;6020:74:150;6110:18;;;6103:34;;;7027:5:145;;;;-1:-1:-1;7027:12:145;;-1:-1:-1;5993:18:150;;7027:30:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7063:37:145;;-1:-1:-1;;;7063:37:145;;7077:4;7063:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;7063:13:145;;-1:-1:-1;7063:13:145;;-1:-1:-1;6327:19:150;;7063:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7111:38:145;;6730:25:150;;;7134:1:145;;-1:-1:-1;;;;;;7111:38:145;;;-1:-1:-1;7111:38:145;;6718:2:150;6703:18;7111:38:145;;;;;;;7155:5;;:30;;;;;-1:-1:-1;;;;;6038:55:150;;;7155:30:145;;;6020:74:150;6110:18;;;6103:34;;;7155:5:145;;;;:12;;5993:18:150;;7155:30:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7192:54;7201:5;;;;;;;;;-1:-1:-1;;;;;7201:5:145;-1:-1:-1;;;;;7201:17:145;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7222:23;7235:10;7222;:23;:::i;:::-;7192:8;:54::i;:::-;7261:5;;:21;;-1:-1:-1;;;7261:21:145;;-1:-1:-1;;;;;7441:55:150;;;7261:21:145;;;7423:74:150;7252:56:145;;7261:5;;:15;;7396:18:150;;7261:21:145;;;;;;;;;;;;;;;;;;;;;;;7252:56;6865:448;;;:::o;4922:470::-;5015:5;;:24;;-1:-1:-1;;;5015:24:145;;5001:6;5015:24;;;6020:74:150;;;5034:4:145;6110:18:150;;;6103:34;5001:6:145;-1:-1:-1;;;;;5015:5:145;;:12;;5993:18:150;;5015:24:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5046:14:145;;-1:-1:-1;;;5046:14:145;;-1:-1:-1;;;;;7441:55:150;;5046:14:145;;;7423:74:150;5046:8:145;;-1:-1:-1;5046:8:145;;-1:-1:-1;7396:18:150;;5046:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5066:5:145;;:47;;-1:-1:-1;;;5066:47:145;;5088:4;5066:47;;;6020:74:150;-1:-1:-1;;6110:18:150;;;6103:34;-1:-1:-1;;;;;5066:5:145;;;;-1:-1:-1;5066:13:145;;-1:-1:-1;5993:18:150;;5066:47:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5131:5:145;;:47;;-1:-1:-1;;;5131:47:145;;-1:-1:-1;;;;;8425:15:150;;;5131:47:145;;;8407:34:150;5164:6:145;8457:18:150;;;8450:43;5173:4:145;8509:18:150;;;8502:34;5120:59:145;;5131:5;;:18;;8319::150;;5131:47:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5120:10;:59::i;:::-;5194:5;;:19;;;-1:-1:-1;;;5194:19:145;;;;5185:35;;-1:-1:-1;;;;;5194:5:145;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5215:4;5185:8;:35::i;:::-;5236:5;;:36;;-1:-1:-1;;;5236:36:145;;-1:-1:-1;;;;;8800:15:150;;;5236:36:145;;;8782:34:150;5266:4:145;8832:18:150;;;8825:43;5227:65:145;;5236:5;;:15;;8694:18:150;;5236:36:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5227:8:145;:65::i;:::-;5308:5;;:21;;-1:-1:-1;;;5308:21:145;;-1:-1:-1;;;;;7441:55:150;;;5308:21:145;;;7423:74:150;5299:34:145;;5308:5;;:15;;7396:18:150;;5308:21:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5331:1;5299:8;:34::i;:::-;5348:5;;:32;;-1:-1:-1;;;5348:32:145;;5372:6;5348:32;;;7423:74:150;5339:48:145;;-1:-1:-1;;;;;5348:5:145;;:15;;7396:18:150;;5348:32:145;;;;;;;;;;;;;;;;;;;;;;;5339:48;4972:420;4922:470::o;3485:348::-;3521:37;;-1:-1:-1;;;3521:37:145;;3535:4;3521:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;3521:13:145;;;;6327:19:150;;3521:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3569:46:145;;3610:4;6730:25:150;;3601:6:145;;-1:-1:-1;3586:4:145;;-1:-1:-1;3569:46:145;;6718:2:150;6703:18;3569:46:145;;;;;;;3621:35;;;;;;;;;;;;;;;;;;:24;:35::i;:::-;3677:5;;:36;;-1:-1:-1;;;3677:36:145;;3699:6;3677:36;;;6020:74:150;3708:4:145;6110:18:150;;;6103:34;3662:12:145;;-1:-1:-1;;;;;3677:5:145;;:13;;5993:18:150;;3677:36:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3662:51;;3719:14;:12;:14::i;:::-;3739:19;3750:7;3739:10;:19::i;:::-;3774:5;;:47;;-1:-1:-1;;;3774:47:145;;3798:4;3774:47;;;8782:34:150;3813:6:145;8832:18:150;;;8825:43;3765:63:145;;-1:-1:-1;;;;;3774:5:145;;:15;;8694:18:150;;3774:47:145;8547:327:150;2170:134:108;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:108;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;11314:162:145:-;11358:113;11369:101;1589:65:59;11463:5:145;;-1:-1:-1;;;;;11463:5:145;11369:18;:101::i;9844:517::-;9957:27;;-1:-1:-1;;;9957:27:145;;-1:-1:-1;;;;;9967:16:145;;;;9957:27;;;5538:41:150;9957:9:145;;;;5511:18:150;;9957:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9990:39:145;;-1:-1:-1;;;9990:39:145;;-1:-1:-1;;10000:28:145;;9990:39;;;5538:41:150;9990:9:145;;-1:-1:-1;9990:9:145;;-1:-1:-1;5511:18:150;;9990:39:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10035:28:145;;-1:-1:-1;;;10035:28:145;;10045:17;;;10035:28;;;5538:41:150;10035:9:145;;-1:-1:-1;10035:9:145;;-1:-1:-1;5511:18:150;;10035:28:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10107:5:145;;:26;;-1:-1:-1;;;10107:26:145;;10093:6;10107:26;;;6020:74:150;;;6110:18;;;6103:34;;;10093:6:145;-1:-1:-1;;;;;;10107:5:145;;;;-1:-1:-1;10107:12:145;;5993:18:150;;10107:26:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10140:14:145;;-1:-1:-1;;;10140:14:145;;-1:-1:-1;;;;;7441:55:150;;10140:14:145;;;7423:74:150;10140:8:145;;-1:-1:-1;10140:8:145;;-1:-1:-1;7396:18:150;;10140:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10160:5:145;;:38;;-1:-1:-1;;;10160:38:145;;10182:4;10160:38;;;6020:74:150;6110:18;;;6103:34;;;-1:-1:-1;;;;;10160:5:145;;;;-1:-1:-1;10160:13:145;;-1:-1:-1;5993:18:150;;10160:38:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10221:92:145;;10289:4;10221:92;;;9289:74:150;9379:18;;;9372:34;;;9422:18;;;9415:34;;;10205:15:145;;;;10244:35;;9262:18:150;;10221:92:145;;;;-1:-1:-1;;10221:92:145;;;;;;;;;;;;;;;;;;;;;;;10205:109;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10320:5:145;;:36;;-1:-1:-1;;;10320:36:145;;-1:-1:-1;;;;;8425:15:150;;;10320:36:145;;;8407:34:150;8477:15;;;8457:18;;;8450:43;8509:18;;;8502:34;;;10320:5:145;;;;-1:-1:-1;10320:18:145;;-1:-1:-1;8319:18:150;;10320:36:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9951:410;9844:517;;;:::o;5561:280::-;5624:5;;:35;;-1:-1:-1;;;5624:35:145;;5645:4;5624:35;;;6020:74:150;5652:6:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;5624:5:145;;;;:12;;5993:18:150;;5624:35:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5688:99:145;;;5767:4;5688:99;;;10664:74:150;5774:6:145;10791:18:150;;;10784:43;5782:4:145;10843:18:150;;;;10836:43;;;;5688:99:145;;;;;;;;;;10637:18:150;;;;5688:99:145;;;;;;;;;-1:-1:-1;;;5688:99:145;;;5665:128;;;;;:15;;-1:-1:-1;5665:15:145;;-1:-1:-1;5665:128:145;;5688:99;5665:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5799:5:145;;:37;;-1:-1:-1;;;5799:37:145;;5822:6;5799:37;;;6020:74:150;5831:4:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;5799:5:145;;;;-1:-1:-1;5799:14:145;;-1:-1:-1;5993:18:150;;5799:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2939:133:108:-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:108;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:108;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;8038:956:145:-;8154:29;;-1:-1:-1;;;8154:29:145;;-1:-1:-1;;;;;8164:18:145;;;;8154:29;;;5538:41:150;8154:9:145;;;;5511:18:150;;8154:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8189:27:145;;-1:-1:-1;;;8189:27:145;;-1:-1:-1;;;;;8199:16:145;;;;8189:27;;;5538:41:150;8189:9:145;;-1:-1:-1;8189:9:145;;-1:-1:-1;5511:18:150;;8189:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8222:32:145;;-1:-1:-1;;;8222:32:145;;-1:-1:-1;;;;;8232:21:145;;;;8222:32;;;5538:41:150;8222:9:145;;-1:-1:-1;8222:9:145;;-1:-1:-1;5511:18:150;;8222:32:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8260:29:145;;-1:-1:-1;;;8260:29:145;;8270:18;;;;8260:29;;;5538:41:150;8260:9:145;;-1:-1:-1;8260:9:145;;-1:-1:-1;5511:18:150;;8260:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8296:5:145;;:26;;-1:-1:-1;;;8296:26:145;;-1:-1:-1;;;;;6038:55:150;;;8296:26:145;;;6020:74:150;6110:18;;;6103:34;;;8296:5:145;;;;-1:-1:-1;8296:12:145;;-1:-1:-1;5993:18:150;;8296:26:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8337:5:145;;:21;;-1:-1:-1;;;8337:21:145;;-1:-1:-1;;;;;7441:55:150;;;8337:21:145;;;7423:74:150;8328:39:145;;-1:-1:-1;8337:5:145;;;;-1:-1:-1;8337:15:145;;7396:18:150;;8337:21:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8360:6;8328:8;:39::i;:::-;8374:14;;-1:-1:-1;;;8374:14:145;;-1:-1:-1;;;;;7441:55:150;;8374:14:145;;;7423:74:150;8374:8:145;;;;7396:18:150;;8374:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8394:5:145;;:32;;-1:-1:-1;;;8394:32:145;;-1:-1:-1;;;;;6038:55:150;;;8394:32:145;;;6020:74:150;6110:18;;;6103:34;;;8394:5:145;;;;-1:-1:-1;8394:13:145;;-1:-1:-1;5993:18:150;;8394:32:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8433:37:145;;-1:-1:-1;;;8433:37:145;;8447:4;8433:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;8433:13:145;;;;6327:19:150;;8433:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8496:2;-1:-1:-1;;;;;8481:26:145;8490:4;-1:-1:-1;;;;;8481:26:145;;8500:6;8481:26;;;;6730:25:150;;6718:2;6703:18;;6584:177;8481:26:145;;;;;;;;8513:17;;-1:-1:-1;;;8513:17:145;;-1:-1:-1;;;;;7441:55:150;;8513:17:145;;;7423:74:150;8513:8:145;;;;7396:18:150;;8513:17:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8547:5:145;;:36;;-1:-1:-1;;;8547:36:145;;-1:-1:-1;;;;;8425:15:150;;;8547:36:145;;;8407:34:150;8477:15;;;8457:18;;;8450:43;8509:18;;;8502:34;;;8536:48:145;;-1:-1:-1;8547:5:145;;;;-1:-1:-1;8547:18:145;;8319::150;;8547:36:145;8118:424:150;8536:48:145;8599:5;;:19;;;-1:-1:-1;;;8599:19:145;;;;8590:37;;-1:-1:-1;;;;;8599:5:145;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;8590:37;-1:-1:-1;;8638:8:145;:29;8634:180;;8686:5;;:30;;-1:-1:-1;;;8686:30:145;;-1:-1:-1;;;;;8800:15:150;;;8686:30:145;;;8782:34:150;8852:15;;;8832:18;;;8825:43;8677:50:145;;8686:5;;:15;;8694:18:150;;8686:30:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8718:8;8677;:50::i;:::-;8634:180;;;8757:5;;:30;;-1:-1:-1;;;8757:30:145;;-1:-1:-1;;;;;8800:15:150;;;8757:30:145;;;8782:34:150;8852:15;;;8832:18;;;8825:43;8748:59:145;;8757:5;;:15;;8694:18:150;;8757:30:145;8547:327:150;8748:59:145;8832:2;-1:-1:-1;;;;;8824:10:145;:4;-1:-1:-1;;;;;8824:10:145;;8820:170;;8853:5;;:21;;-1:-1:-1;;;8853:21:145;;-1:-1:-1;;;;;7441:55:150;;;8853:21:145;;;7423:74:150;8844:39:145;;8853:5;;:15;;7396:18:150;;8853:21:145;7277:226:150;8844:39:145;8820:170;;;8913:5;;:21;;-1:-1:-1;;;8913:21:145;;-1:-1:-1;;;;;7441:55:150;;;8913:21:145;;;7423:74:150;8904:34:145;;8913:5;;:15;;7396:18:150;;8913:21:145;7277:226:150;8904:34:145;8955:5;;:19;;-1:-1:-1;;;8955:19:145;;-1:-1:-1;;;;;7441:55:150;;;8955:19:145;;;7423:74:150;8946:37:145;;8955:5;;:15;;7396:18:150;;8955:19:145;7277:226:150;2622:146:145;2668:5;;:12;;;;;;;;2659:31;;-1:-1:-1;;;;;2668:5:145;;:10;;:12;;;;;:5;;:12;;;;;;;:5;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2668:12:145;;;;;;;;;;;;:::i;:::-;2659:31;;;;;;;;;;;;;;;;;:8;:31::i;:::-;2705:5;;:14;;;;;;;;2696:31;;-1:-1:-1;;;;;2705:5:145;;:12;;:14;;;;;:5;;:14;;;;;;;:5;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2705:14:145;;;;;;;;;;;;:::i;:::-;2696:31;;;;;;;;;;;;;;;;;:8;:31::i;:::-;2742:5;;:16;;;;;;;;2733:30;;-1:-1:-1;;;;;2742:5:145;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2733:30;;2760:2;2733:8;:30::i;2334:79::-;2387:5;;2368:40;;-1:-1:-1;;;;;2387:5:145;2379:28;;2368:10;:40::i;2456:178:108:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;4307:611:145:-;4385:5;;:24;;-1:-1:-1;;;4385:24:145;;4371:6;4385:24;;;6020:74:150;;;4404:4:145;6110:18:150;;;6103:34;4371:6:145;-1:-1:-1;;;;;4385:5:145;;:12;;5993:18:150;;4385:24:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4416:14:145;;-1:-1:-1;;;4416:14:145;;-1:-1:-1;;;;;7441:55:150;;4416:14:145;;;7423:74:150;4416:8:145;;-1:-1:-1;4416:8:145;;-1:-1:-1;7396:18:150;;4416:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4436:5:145;;:34;;-1:-1:-1;;;4436:34:145;;4458:4;4436:34;;;6020:74:150;4465:4:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;4436:5:145;;;;-1:-1:-1;4436:13:145;;-1:-1:-1;5993:18:150;;4436:34:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4477:37:145;;-1:-1:-1;;;4477:37:145;;4491:4;4477:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;4477:13:145;;;;6327:19:150;;4477:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4525:37:145;;4557:4;6730:25:150;;4548:6:145;;-1:-1:-1;;;;;;4525:37:145;;;-1:-1:-1;4525:37:145;;6718:2:150;6703:18;4525:37:145;;;;;;;4568:40;;;;;;;;;;;;;;;;;;:24;:40::i;:::-;4629:5;;:47;;-1:-1:-1;;;4629:47:145;;-1:-1:-1;;;;;8425:15:150;;;4629:47:145;;;8407:34:150;4662:6:145;8457:18:150;;;8450:43;4671:4:145;8509:18:150;;;8502:34;4614:12:145;;4629:5;;:18;;8319::150;;4629:47:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4614:62;;4682:14;:12;:14::i;:::-;4702:19;4713:7;4702:10;:19::i;:::-;4736:5;;:19;;;-1:-1:-1;;;4736:19:145;;;;4727:35;;-1:-1:-1;;;;;4736:5:145;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;4727:35;4778:5;;:36;;-1:-1:-1;;;4778:36:145;;-1:-1:-1;;;;;8800:15:150;;;4778:36:145;;;8782:34:150;4808:4:145;8832:18:150;;;8825:43;4769:49:145;;4778:5;;:15;;8694:18:150;;4778:36:145;8547:327:150;4769:49:145;4834:5;;:21;;-1:-1:-1;;;4834:21:145;;-1:-1:-1;;;;;7441:55:150;;;4834:21:145;;;7423:74:150;4825:34:145;;4834:5;;:15;;7396:18:150;;4834:21:145;7277:226:150;4825:34:145;4874:5;;:32;;-1:-1:-1;;;4874:32:145;;4898:6;4874:32;;;7423:74:150;4865:48:145;;-1:-1:-1;;;;;4874:5:145;;:15;;7396:18:150;;4874:32:145;7277:226:150;4865:48:145;4342:576;;4307:611::o;6212:350::-;6316:5;;:26;;-1:-1:-1;;;6316:26:145;;6302:6;6316:26;;;6020:74:150;;;6335:6:145;6110:18:150;;;6103:34;6302:6:145;-1:-1:-1;;;;;6316:5:145;;:12;;5993:18:150;;6316:26:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6349:14:145;;-1:-1:-1;;;6349:14:145;;-1:-1:-1;;;;;7441:55:150;;6349:14:145;;;7423:74:150;6349:8:145;;-1:-1:-1;6349:8:145;;-1:-1:-1;7396:18:150;;6349:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6369:5:145;;:34;;-1:-1:-1;;;6369:34:145;;6391:4;6369:34;;;6020:74:150;6398:4:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;6369:5:145;;;;-1:-1:-1;6369:13:145;;-1:-1:-1;5993:18:150;;6369:34:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6426:77:145;;-1:-1:-1;;;;;10682:55:150;;6426:77:145;;;10664:74:150;6490:6:145;10791:18:150;;;10784:43;6498:4:145;10843:18:150;;;10836:43;6410:15:145;;;;-1:-1:-1;;;6449:33:145;10637:18:150;;6426:77:145;;;;-1:-1:-1;;6426:77:145;;;;;;;;;;;;;;;;;;;;;;;6410:94;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6510:5:145;;:47;;-1:-1:-1;;;6510:47:145;;-1:-1:-1;;;;;8425:15:150;;;6510:47:145;;;8407:34:150;6543:6:145;8457:18:150;;;8450:43;6552:4:145;8509:18:150;;;8502:34;6510:5:145;;;;-1:-1:-1;6510:18:145;;-1:-1:-1;8319:18:150;;6510:47:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10365:534::-;10482:27;;-1:-1:-1;;;10482:27:145;;-1:-1:-1;;;;;10492:16:145;;;;10482:27;;;5538:41:150;10482:9:145;;;;5511:18:150;;10482:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10515:41:145;;-1:-1:-1;;;10515:41:145;;-1:-1:-1;;10525:30:145;;10515:41;;;5538::150;10515:9:145;;-1:-1:-1;10515:9:145;;-1:-1:-1;5511:18:150;;10515:41:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10562:34:145;;-1:-1:-1;;;10562:34:145;;10572:23;;;10562:34;;;5538:41:150;10562:9:145;;-1:-1:-1;10562:9:145;;-1:-1:-1;5511:18:150;;10562:34:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10640:5:145;;:30;;-1:-1:-1;;;10640:30:145;;10626:6;10640:30;;;6020:74:150;;;6110:18;;;6103:34;;;10626:6:145;-1:-1:-1;;;;;;10640:5:145;;;;-1:-1:-1;10640:12:145;;5993:18:150;;10640:30:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10677:14:145;;-1:-1:-1;;;10677:14:145;;-1:-1:-1;;;;;7441:55:150;;10677:14:145;;;7423:74:150;10677:8:145;;-1:-1:-1;10677:8:145;;-1:-1:-1;7396:18:150;;10677:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10697:5:145;;:40;;-1:-1:-1;;;10697:40:145;;10719:4;10697:40;;;6020:74:150;6110:18;;;6103:34;;;-1:-1:-1;;;;;10697:5:145;;;;-1:-1:-1;10697:13:145;;-1:-1:-1;5993:18:150;;10697:40:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10760:87:145;;-1:-1:-1;;;;;9307:55:150;;10760:87:145;;;9289:74:150;9379:18;;;9372:34;;;9422:18;;;9415:34;;;10744:15:145;;;;-1:-1:-1;;;10783:33:145;9262:18:150;;10760:87:145;9087:368:150;2310:140:108;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2787:146;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2772:324:145;2805:37;;-1:-1:-1;;;2805:37:145;;2819:4;2805:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;2805:13:145;;;;6327:19:150;;2805:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2853:43:145;;2891:4;6730:25:150;;2882:6:145;;-1:-1:-1;2870:1:145;;-1:-1:-1;2853:43:145;;6718:2:150;6703:18;2853:43:145;;;;;;;2902:32;;;;;;;;;;;;;;;;;;:24;:32::i;:::-;2940:5;;:35;;-1:-1:-1;;;2940:35:145;;2961:6;2940:35;;;6020:74:150;2970:4:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;2940:5:145;;;;:12;;5993:18:150;;2940:35:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2981:14;:12;:14::i;:::-;3011:5;;:19;;;-1:-1:-1;;;3011:19:145;;;;3002:35;;-1:-1:-1;;;;;3011:5:145;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;3002:35;3052:5;;:32;;-1:-1:-1;;;3052:32:145;;3076:6;3052:32;;;7423:74:150;3043:48:145;;-1:-1:-1;;;;;3052:5:145;;:15;;7396:18:150;;3052:32:145;7277:226:150;7518:516:145;7581:27;;-1:-1:-1;;;7581:27:145;;-1:-1:-1;;;;;7591:16:145;;;;7581:27;;;5538:41:150;7581:9:145;;;;5511:18:150;;7581:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7614:5:145;;:35;;-1:-1:-1;;;7614:35:145;;7635:4;7614:35;;;6020:74:150;6110:18;;;6103:34;;;-1:-1:-1;;;;;7614:5:145;;;;-1:-1:-1;7614:12:145;;-1:-1:-1;5993:18:150;;7614:35:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7656:37:145;;-1:-1:-1;;;7656:37:145;;7670:4;7656:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;7656:13:145;;-1:-1:-1;7656:13:145;;-1:-1:-1;6327:19:150;;7656:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7704:35:145;;6730:25:150;;;-1:-1:-1;;;;;7704:35:145;;;-1:-1:-1;7721:4:145;;-1:-1:-1;7704:35:145;;6718:2:150;6703:18;7704:35:145;;;;;;;7756:5;;:26;;-1:-1:-1;;;7756:26:145;;-1:-1:-1;;;;;6038:55:150;;;7756:26:145;;;6020:74:150;6110:18;;;6103:34;;;7745:38:145;;7756:5;;:14;;5993:18:150;;7756:26:145;5846:297:150;7745:38:145;7798:5;;:19;;;-1:-1:-1;;;7798:19:145;;;;7789:37;;-1:-1:-1;;;;;7798:5:145;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;7789:37;-1:-1:-1;;;;;7837:19:145;;7845:4;7837:19;7833:197;;7875:5;;:30;;-1:-1:-1;;;7875:30:145;;7899:4;7875:30;;;7423:74:150;7866:48:145;;-1:-1:-1;;;;;7875:5:145;;:15;;7396:18:150;;7875:30:145;7277:226:150;7833:197:145;7944:5;;:30;;-1:-1:-1;;;7944:30:145;;7968:4;7944:30;;;7423:74:150;7935:43:145;;-1:-1:-1;;;;;7944:5:145;;:15;;7396:18:150;;7944:30:145;7277:226:150;7935:43:145;7995:5;;:19;;-1:-1:-1;;;7995:19:145;;-1:-1:-1;;;;;7441:55:150;;;7995:19:145;;;7423:74:150;7986:37:145;;7995:5;;:15;;7396:18:150;;7995:19:145;7277:226:150;1875:141:108;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:102;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:102;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;6020:74:150;;;2221:17:102;6110:18:150;;;6103:34;2196:43:102;;;;;;;;;5993:18:150;;;2196:43:102;;;-1:-1:-1;;1671:64:102;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:102;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:102:o;8998:405:145:-;9107:27;;-1:-1:-1;;;9107:27:145;;-1:-1:-1;;;;;9117:16:145;;;;9107:27;;;5538:41:150;9107:9:145;;;;5511:18:150;;9107:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9140:41:145;;-1:-1:-1;;;9140:41:145;;-1:-1:-1;;9150:30:145;;9140:41;;;5538::150;9140:9:145;;-1:-1:-1;9140:9:145;;-1:-1:-1;5511:18:150;;9140:41:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9187:34:145;;-1:-1:-1;;;9187:34:145;;9197:23;;;9187:34;;;5538:41:150;9187:9:145;;-1:-1:-1;9187:9:145;;-1:-1:-1;5511:18:150;;9187:34:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9228:5:145;;:28;;-1:-1:-1;;;9228:28:145;;-1:-1:-1;;;;;6038:55:150;;;9228:28:145;;;6020:74:150;6110:18;;;6103:34;;;9228:5:145;;;;-1:-1:-1;9228:12:145;;-1:-1:-1;5993:18:150;;9228:28:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9278:85:145;;;-1:-1:-1;;;;;9307:55:150;;9278:85:145;;;9289:74:150;9379:18;;;9372:34;;;9422:18;;;;9415:34;;;9278:85:145;;;;;;;;;;9262:18:150;;;;9278:85:145;;;;;;;;;-1:-1:-1;;;9278:85:145;;;9262:102;;;;;:15;;-1:-1:-1;9262:15:145;;-1:-1:-1;9262:102:145;;9278:85;9262:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9370:5:145;;:28;;;;;-1:-1:-1;;;;;6038:55:150;;;9370:28:145;;;6020:74:150;6110:18;;;6103:34;;;9370:5:145;;;;-1:-1:-1;9370:12:145;;-1:-1:-1;5993:18:150;;9370:28:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8998:405;;;:::o;3837:466::-;3874:5;;:33;;-1:-1:-1;;;3874:33:145;;3895:4;3874:33;;;6020:74:150;3902:4:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;3874:5:145;;;;:12;;5993:18:150;;3874:33:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3914:37:145;;-1:-1:-1;;;3914:37:145;;3928:4;3914:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;3914:13:145;;-1:-1:-1;3914:13:145;;-1:-1:-1;6327:19:150;;3914:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3962:46:145;;4003:4;6730:25:150;;3994:6:145;;-1:-1:-1;3979:4:145;;-1:-1:-1;3962:46:145;;6718:2:150;6703:18;3962:46:145;;;;;;;4014:36;;;;;;;;;;;;;;;;;;:24;:36::i;:::-;4071:5;;:37;;-1:-1:-1;;;4071:37:145;;4094:6;4071:37;;;6020:74:150;4103:4:145;6110:18:150;;;6103:34;4056:12:145;;-1:-1:-1;;;;;4071:5:145;;:14;;5993:18:150;;4071:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4056:52;;4114:14;:12;:14::i;:::-;4134:19;4145:7;4134:10;:19::i;:::-;4168:5;;:19;;;-1:-1:-1;;;4168:19:145;;;;4159:35;;-1:-1:-1;;;;;4168:5:145;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;4159:35;4210:5;;:30;;-1:-1:-1;;;4210:30:145;;4234:4;4210:30;;;7423:74:150;4201:43:145;;-1:-1:-1;;;;;4210:5:145;;:15;;7396:18:150;;4210:30:145;7277:226:150;3100:381:145;3133:5;;:35;;-1:-1:-1;;;3133:35:145;;3154:6;3133:35;;;6020:74:150;3163:4:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;3133:5:145;;;;:12;;5993:18:150;;3133:35:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3175:37:145;;-1:-1:-1;;;3175:37:145;;3189:4;3175:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;3175:13:145;;-1:-1:-1;3175:13:145;;-1:-1:-1;6327:19:150;;3175:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3223:45:145;;3261:6;6730:25:150;;3257:1:145;;-1:-1:-1;3240:6:145;;-1:-1:-1;3223:45:145;;6718:2:150;6703:18;3223:45:145;;;;;;;3274:32;;;;;;;;;;;;;;;;;;:24;:32::i;:::-;3312:5;;:37;;;;;3333:6;3312:37;;;6020:74:150;3342:6:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;3312:5:145;;;;:12;;5993:18:150;;3312:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3355:14;:12;:14::i;:::-;3385:5;;:19;;;-1:-1:-1;;;3385:19:145;;;;3376:44;;-1:-1:-1;;;;;3385:5:145;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3406:13;3376:8;:44::i;:::-;3435:5;;:32;;-1:-1:-1;;;3435:32:145;;3459:6;3435:32;;;7423:74:150;3426:50:145;;-1:-1:-1;;;;;3435:5:145;;:15;;7396:18:150;;3435:32:145;;;;;;;;;;;;;;;;;;;;;;2022:142:108;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:108;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;9407:433:145:-;9520:27;;-1:-1:-1;;;9520:27:145;;-1:-1:-1;;;;;9530:16:145;;;;9520:27;;;5538:41:150;9520:9:145;;;;5511:18:150;;9520:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9553:41:145;;-1:-1:-1;;;9553:41:145;;-1:-1:-1;;9563:30:145;;9553:41;;;5538::150;9553:9:145;;-1:-1:-1;9553:9:145;;-1:-1:-1;5511:18:150;;9553:41:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9600:34:145;;-1:-1:-1;;;9600:34:145;;9610:23;;;9600:34;;;5538:41:150;9600:9:145;;-1:-1:-1;9600:9:145;;-1:-1:-1;5511:18:150;;9600:34:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9641:5:145;;:39;;-1:-1:-1;;;9641:39:145;;9662:4;9641:39;;;6020:74:150;6110:18;;;6103:34;;;-1:-1:-1;;;;;9641:5:145;;;;-1:-1:-1;9641:12:145;;-1:-1:-1;5993:18:150;;9641:39:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9702:96:145;;;9768:4;9702:96;;;9289:74:150;9379:18;;;9372:34;;;9422:18;;;;9415:34;;;9702:96:145;;;;;;;;;;9262:18:150;;;;9702:96:145;;;;;;;;;-1:-1:-1;;;9702:96:145;;;9686:113;;;;;:15;;-1:-1:-1;9686:15:145;;-1:-1:-1;9686:113:145;;9702:96;9686:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9805:5:145;;:30;;-1:-1:-1;;;9805:30:145;;-1:-1:-1;;;;;6038:55:150;;;9805:30:145;;;6020:74:150;6110:18;;;6103:34;;;9805:5:145;;;;-1:-1:-1;9805:14:145;;-1:-1:-1;5993:18:150;;9805:30:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9407:433;;;:::o;6566:295::-;6625:27;;-1:-1:-1;;;6625:27:145;;-1:-1:-1;;;;;6635:16:145;;;;6625:27;;;5538:41:150;6625:9:145;;;;5511:18:150;;6625:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6659:37:145;;-1:-1:-1;;;6659:37:145;;6673:4;6659:37;;;6355:41:150;;;6412:18;;;6405:50;;;6471:18;;;6464:50;;;6530:18;;;6523:50;6659:13:145;;-1:-1:-1;6659:13:145;;-1:-1:-1;6327:19:150;;6659:37:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6707:32:145;;6730:25:150;;;-1:-1:-1;;;;;6707:32:145;;;-1:-1:-1;6724:1:145;;-1:-1:-1;6707:32:145;;6718:2:150;6703:18;6707:32:145;;;;;;;6745:5;;:24;;-1:-1:-1;;;6745:24:145;;-1:-1:-1;;;;;6038:55:150;;;6745:24:145;;;6020:74:150;6110:18;;;6103:34;;;6745:5:145;;;;:12;;5993:18:150;;6745:24:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6776:37;6785:5;;;;;;;;;-1:-1:-1;;;;;6785:5:145;-1:-1:-1;;;;;6785:17:145;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5845:363;5951:5;;:24;;-1:-1:-1;;;5951:24:145;;5937:6;5951:24;;;6020:74:150;;;5970:4:145;6110:18:150;;;6103:34;5937:6:145;-1:-1:-1;;;;;5951:5:145;;:12;;5993:18:150;;5951:24:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5982:14:145;;-1:-1:-1;;;5982:14:145;;-1:-1:-1;;;;;7441:55:150;;5982:14:145;;;7423:74:150;5982:8:145;;-1:-1:-1;5982:8:145;;-1:-1:-1;7396:18:150;;5982:14:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6002:5:145;;:36;;-1:-1:-1;;;6002:36:145;;6024:4;6002:36;;;6020:74:150;6031:6:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;6002:5:145;;;;-1:-1:-1;6002:13:145;;-1:-1:-1;5993:18:150;;6002:36:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6061:88:145;;6129:4;6061:88;;;10664:74:150;6136:6:145;10791:18:150;;;10784:43;6144:4:145;10843:18:150;;;10836:43;6045:15:145;;;;6084:35;;10637:18:150;;6061:88:145;10413:472:150;5396:161:145;5447:5;;:46;;-1:-1:-1;;;5447:46:145;;5468:4;5447:46;;;6020:74:150;-1:-1:-1;;6110:18:150;;;6103:34;-1:-1:-1;;;;;5447:5:145;;;;:12;;5993:18:150;;5447:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:103;309:37;;-1:-1:-1;;;;;5499:15:145;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5522:5:145;;:30;;-1:-1:-1;;;5522:30:145;;5543:4;5522:30;;;6020:74:150;5522:5:145;6110:18:150;;;6103:34;-1:-1:-1;;;;;5522:5:145;;;;-1:-1:-1;5522:12:145;;-1:-1:-1;5993:18:150;;5522:30:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7317:197;7379:27;;-1:-1:-1;;;7379:27:145;;-1:-1:-1;;;;;7389:16:145;;;;7379:27;;;5538:41:150;7379:9:145;;;;5511:18:150;;7379:27:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7424:5:145;;:25;;-1:-1:-1;;;7424:25:145;;-1:-1:-1;;;;;6038:55:150;;;7424:25:145;;;6020:74:150;6110:18;;;6103:34;;;7413:37:145;;-1:-1:-1;7424:5:145;;;;-1:-1:-1;7424:13:145;;5993:18:150;;7424:25:145;5846:297:150;7413:37:145;7466:5;;:34;;-1:-1:-1;;;7466:34:145;;7490:4;7466:34;;;8782::150;-1:-1:-1;;;;;8852:15:150;;;8832:18;;;8825:43;7457:52:145;;7466:5;;:15;;8694:18:150;;7466:34:145;8547:327:150;11595:115:145;11653:13;11681:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;11674:31;;11595:115;:::o;5209:262:102:-;5271:1;5266;:6;5262:203;;5293:41;;;;;14508:2:150;14490:21;;;14547:2;14527:18;;;14520:30;14586:34;14581:2;14566:18;;14559:62;14657:4;14652:2;14637:18;;14630:32;14694:3;14679:19;;14306:398;5293:41:102;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;:::-;;;;;;;;5448:6;:4;:6::i;3262:157::-;3322:9;3317:96;;3352:30;;;;;15945:2:150;15927:21;;;15984:2;15964:18;;;15957:30;16023:25;16018:2;16003:18;;15996:53;16081:2;16066:18;;15743:347;3352:30:102;;;;;;;;3396:6;:4;:6::i;1879:116:145:-;1948:42;1963:26;1984:4;1963:20;:26::i;:::-;1948:14;:42::i;914:534:0:-;953:11;967:9;987:39;;;;;;;;;16301:21:150;;;;16358:2;16338:18;;;16331:30;16397:22;16377:18;;;16370:50;309:37:103;16472:20:150;;;16465:52;953:23:0;;-1:-1:-1;987:8:0;;;;16437:19:150;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;16860:2:150;1214:49:0;;;16842:21:150;16899:2;16879:18;;;16872:30;16938:27;16918:18;;;16911:55;16983:18;;1214:49:0;;;;;;;;;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;3586:379:74:-;3709:16;;;3723:1;3709:16;;;;;;;;3661:11;;;;3709:16;3723:1;3709:16;;;;;;;;;;-1:-1:-1;3709:16:74;3680:45;;3764:10;3731:9;3741:1;3731:12;;;;;;;;:::i;:::-;;;;;;:44;;;;;3820:6;-1:-1:-1;;;;;3804:24:74;3796:33;;3781:9;3791:1;3781:12;;;;;;;;:::i;:::-;;;;;;;;;;:48;3836:13;3852:64;1169:66;3889:9;3836:13;1298:66;3852:26;:64::i;:::-;3836:80;;3930:29;3951:5;3938:20;;8172:5;8086:97;3930:29;3922:38;;;;3586:379;;;;;:::o;17902:344:102:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;22618:2:150;22600:21;;;22657:2;22637:18;;;22630:30;22696:34;22691:2;22676:18;;22669:62;22767:6;22762:2;22747:18;;22740:34;22806:3;22791:19;;22416:400;18062:43:102;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;9289:74:150;;;2677:17:102;9379:18:150;;;9372:34;;;;2712:4:102;9422:18:150;;;9415:34;2489:11:102;;1671:64;2586:43;;9262:18:150;;2652:67:102;;;-1:-1:-1;;2652:67:102;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:102;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:102;2820:7;:14;;;;;;;;2409:432::o;1999:220:145:-;2143:5;;2115:16;;;;;;;;2071:13;;2092:20;;-1:-1:-1;;;;;2143:5:145;;;;;;2115:14;;:16;;;;;;;;;;;;;;2143:5;2115:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2115:34:145;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2092:82;;2201:6;2209:4;2187:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2180:34;;;1999:220;;;:::o;330:580:0:-;394:39;;;;;;;;;16301:21:150;;;;16358:2;16338:18;;;16331:30;16397:22;16377:18;;;16370:50;309:37:103;16472:20:150;;;16465:52;394:8:0;;;;16437:19:150;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:103;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:103;;883:22:0;;;;;;;309:37:103;883:20:0;:22;;;;;;;;;;;;;;;;;;;;;;;;;;1754:155;1818:86;317:28:103;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;6730:25:150;;;6718:2;6703:18;;6584:177;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;17775:457:28:-;17932:7;17947:21;17971:17;:15;:17::i;:::-;17947:41;-1:-1:-1;18023:4:28;-1:-1:-1;;;;;17998:30:28;;;17994:234;;18045:68;18070:7;18079:8;18089:10;18101:11;18045:24;:68::i;:::-;18038:75;;;;;17994:234;18141:80;;;;;-1:-1:-1;;;;;18141:36:28;;;;;:80;;18178:7;;18187:8;;18197:10;;18209:11;;18141:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17775:457::-;;;;;;;:::o;5630:121:116:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:116;;;;;;;;;;;;;;;;;;;;5685:15;:59::i;1836:227:28:-;1066:42;1925:22;1886:7;;-1:-1:-1;;;;;1925:22:28;;1953:106;;2001:10;1994:17;;;1836:227;:::o;36171:541:25:-;36328:7;36465:242;36509:59;36550:7;36559:8;36509:40;:59::i;:::-;36586:31;;;;4323:19:4;:27;579:1:34;4322:44:4;4288:79;;;4275:93;36635:63:25;36674:11;36687:10;36635:38;:63::i;:::-;36465:17;:242::i;:::-;36452:255;36171:541;-1:-1:-1;;;;;36171:541:25:o;181:376:116:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;50806:191:25:-;50908:7;50972;50981:8;50955:35;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;50955:35:25;;;;;;;;;50945:46;;50955:35;50945:46;;;;42361:22;50938:53;;50806:191;-1:-1:-1;;;50806:191:25:o;51823:242::-;51919:7;;;51958:84;51978:10;51974:14;;:1;:14;51958:84;;;52003:32;4275:93:4;4323:19;:27;;;579:1:34;4322:44:4;4288:79;;;4275:93;52003:32:25;;:::i;:::-;;-1:-1:-1;51990:3:25;;51958:84;;;-1:-1:-1;52054:6:25;51823:242;-1:-1:-1;;;51823:242:25:o;8945:812:23:-;9043:14;9079:2;9069:6;:12;9065:112;;9138:2;9129:6;:11;9111:29;;;;9160:2;9150:12;;;;;;:::i;:::-;;;;9065:112;-1:-1:-1;9368:21:23;;9353:12;9341:25;;9337:53;9516:2;:11;;;9598:22;;;9594:159;;;9734:1;9718:14;9714:22;9708:29;9693:12;9678:13;9674:32;9670:68;9662:6;9659:80;9649:90;;9059:698;8945:812;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:154:150:-;-1:-1:-1;;;;;93:5:150;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:383;250:6;258;266;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;374:9;361:23;393:31;418:5;393:31;:::i;:::-;443:5;495:2;480:18;;467:32;;-1:-1:-1;546:2:150;531:18;;;518:32;;173:383;-1:-1:-1;;;173:383:150:o;561:681::-;732:2;784:21;;;854:13;;757:18;;;876:22;;;703:4;;732:2;955:15;;;;929:2;914:18;;;703:4;998:218;1012:6;1009:1;1006:13;998:218;;;1077:13;;-1:-1:-1;;;;;1073:62:150;1061:75;;1191:15;;;;1156:12;;;;1034:1;1027:9;998:218;;;-1:-1:-1;1233:3:150;;561:681;-1:-1:-1;;;;;;561:681:150:o;1247:667::-;1342:6;1350;1358;1366;1374;1427:3;1415:9;1406:7;1402:23;1398:33;1395:53;;;1444:1;1441;1434:12;1395:53;1483:9;1470:23;1502:31;1527:5;1502:31;:::i;:::-;1552:5;-1:-1:-1;1609:2:150;1594:18;;1581:32;1622:33;1581:32;1622:33;:::i;:::-;1674:7;-1:-1:-1;1733:2:150;1718:18;;1705:32;1746:33;1705:32;1746:33;:::i;:::-;1247:667;;;;-1:-1:-1;1798:7:150;;1852:2;1837:18;;1824:32;;-1:-1:-1;1903:3:150;1888:19;1875:33;;1247:667;-1:-1:-1;;1247:667:150:o;1919:1697::-;2123:4;2152:2;2192;2181:9;2177:18;2222:2;2211:9;2204:21;2245:6;2280;2274:13;2311:6;2303;2296:22;2337:2;2327:12;;2370:2;2359:9;2355:18;2348:25;;2432:2;2422:6;2419:1;2415:14;2404:9;2400:30;2396:39;2470:2;2462:6;2458:15;2491:1;2512;2522:1065;2538:6;2533:3;2530:15;2522:1065;;;2607:22;;;-1:-1:-1;;2603:95:150;2591:108;;2722:13;;2809:9;;-1:-1:-1;;;;;2805:58:150;2790:74;;2903:11;;2897:18;2935:15;;;2928:27;;;3016:19;;2762:15;;;3048:24;;;3138:21;;;;3183:1;;3106:2;3094:15;;;3197:282;3213:8;3208:3;3205:17;3197:282;;;3294:15;;3311:66;3290:88;3276:103;;3448:17;;;;3241:1;3232:11;;;;;3405:14;;;;3197:282;;;-1:-1:-1;3565:12:150;;;;3502:5;-1:-1:-1;;;3530:15:150;;;;2564:1;2555:11;2522:1065;;;-1:-1:-1;3604:6:150;;1919:1697;-1:-1:-1;;;;;;;;;1919:1697:150:o;3621:250::-;3706:1;3716:113;3730:6;3727:1;3724:13;3716:113;;;3806:11;;;3800:18;3787:11;;;3780:39;3752:2;3745:10;3716:113;;;-1:-1:-1;;3863:1:150;3845:16;;3838:27;3621:250::o;3876:330::-;3918:3;3956:5;3950:12;3983:6;3978:3;3971:19;3999:76;4068:6;4061:4;4056:3;4052:14;4045:4;4038:5;4034:16;3999:76;:::i;:::-;4120:2;4108:15;-1:-1:-1;;4104:88:150;4095:98;;;;4195:4;4091:109;;3876:330;-1:-1:-1;;3876:330:150:o;4211:862::-;4373:4;4402:2;4442;4431:9;4427:18;4472:2;4461:9;4454:21;4495:6;4530;4524:13;4561:6;4553;4546:22;4599:2;4588:9;4584:18;4577:25;;4661:2;4651:6;4648:1;4644:14;4633:9;4629:30;4625:39;4611:53;;4699:2;4691:6;4687:15;4720:1;4730:314;4744:6;4741:1;4738:13;4730:314;;;-1:-1:-1;;4821:9:150;4813:6;4809:22;4805:95;4800:3;4793:108;4924:40;4957:6;4948;4942:13;4924:40;:::i;:::-;4914:50;-1:-1:-1;5022:12:150;;;;4987:15;;;;4766:1;4759:9;4730:314;;;-1:-1:-1;5061:6:150;;4211:862;-1:-1:-1;;;;;;;4211:862:150:o;5078:315::-;5146:6;5154;5207:2;5195:9;5186:7;5182:23;5178:32;5175:52;;;5223:1;5220;5213:12;5175:52;5262:9;5249:23;5281:31;5306:5;5281:31;:::i;:::-;5331:5;5383:2;5368:18;;;;5355:32;;-1:-1:-1;;;5078:315:150:o;5590:251::-;5660:6;5713:2;5701:9;5692:7;5688:23;5684:32;5681:52;;;5729:1;5726;5719:12;5681:52;5761:9;5755:16;5780:31;5805:5;5780:31;:::i;:::-;5830:5;5590:251;-1:-1:-1;;;5590:251:150:o;6766:184::-;6836:6;6889:2;6877:9;6868:7;6864:23;6860:32;6857:52;;;6905:1;6902;6895:12;6857:52;-1:-1:-1;6928:16:150;;6766:184;-1:-1:-1;6766:184:150:o;6955:::-;-1:-1:-1;;;7004:1:150;6997:88;7104:4;7101:1;7094:15;7128:4;7125:1;7118:15;7144:128;7211:9;;;7232:11;;;7229:37;;;7246:18;;:::i;7836:277::-;7903:6;7956:2;7944:9;7935:7;7931:23;7927:32;7924:52;;;7972:1;7969;7962:12;7924:52;8004:9;7998:16;8057:5;8050:13;8043:21;8036:5;8033:32;8023:60;;8079:1;8076;8069:12;9460:218;9607:2;9596:9;9589:21;9570:4;9627:45;9668:2;9657:9;9653:18;9645:6;9627:45;:::i;10890:184::-;-1:-1:-1;;;10939:1:150;10932:88;11039:4;11036:1;11029:15;11063:4;11060:1;11053:15;11079:956;11159:6;11212:2;11200:9;11191:7;11187:23;11183:32;11180:52;;;11228:1;11225;11218:12;11180:52;11261:9;11255:16;11290:18;11331:2;11323:6;11320:14;11317:34;;;11347:1;11344;11337:12;11317:34;11385:6;11374:9;11370:22;11360:32;;11430:7;11423:4;11419:2;11415:13;11411:27;11401:55;;11452:1;11449;11442:12;11401:55;11481:2;11475:9;11503:2;11499;11496:10;11493:36;;;11509:18;;:::i;:::-;11643:2;11637:9;11705:4;11697:13;;-1:-1:-1;;11693:22:150;;;11717:2;11689:31;11685:40;11673:53;;;11741:18;;;11761:22;;;11738:46;11735:72;;;11787:18;;:::i;:::-;11827:10;11823:2;11816:22;11862:2;11854:6;11847:18;11902:7;11897:2;11892;11888;11884:11;11880:20;11877:33;11874:53;;;11923:1;11920;11913:12;11874:53;11936:68;12001:2;11996;11988:6;11984:15;11979:2;11975;11971:11;11936:68;:::i;:::-;12023:6;11079:956;-1:-1:-1;;;;;;;11079:956:150:o;12040:273::-;12108:6;12161:2;12149:9;12140:7;12136:23;12132:32;12129:52;;;12177:1;12174;12167:12;12129:52;12209:9;12203:16;12259:4;12252:5;12248:16;12241:5;12238:27;12228:55;;12279:1;12276;12269:12;12318:437;12397:1;12393:12;;;;12440;;;12461:61;;12515:4;12507:6;12503:17;12493:27;;12461:61;12568:2;12560:6;12557:14;12537:18;12534:38;12531:218;;-1:-1:-1;;;12602:1:150;12595:88;12706:4;12703:1;12696:15;12734:4;12731:1;12724:15;12531:218;;12318:437;;;:::o;13062:430::-;13259:66;13251:6;13247:79;13242:3;13235:92;13217:3;13356:6;13350:13;13372:74;13439:6;13435:1;13430:3;13426:11;13419:4;13411:6;13407:17;13372:74;:::i;:::-;13466:16;;;;13484:1;13462:24;;13062:430;-1:-1:-1;;;13062:430:150:o;13497:287::-;13626:3;13664:6;13658:13;13680:66;13739:6;13734:3;13727:4;13719:6;13715:17;13680:66;:::i;:::-;13762:16;;;;;13497:287;-1:-1:-1;;13497:287:150:o;14873:348::-;15103:2;15092:9;15085:21;15066:4;15123:49;15168:2;15157:9;15153:18;14786:2;14774:15;;14821:12;14814:4;14805:14;;14798:36;14859:2;14850:12;;14709:159;15123:49;15115:57;;15208:6;15203:2;15192:9;15188:18;15181:34;14873:348;;;;:::o;15390:::-;15620:2;15609:9;15602:21;15583:4;15640:49;15685:2;15674:9;15670:18;15303:2;15291:15;;15338:12;15331:4;15322:14;;15315:36;15376:2;15367:12;;15226:159;16528:125;16593:9;;;16614:10;;;16611:36;;;16627:18;;:::i;17138:781::-;17188:3;17229:5;17223:12;17258:36;17284:9;17258:36;:::i;:::-;17313:1;17330:17;;;17356:191;;;;17561:1;17556:357;;;;17323:590;;17356:191;17404:66;17393:9;17389:82;17384:3;17377:95;17527:6;17520:14;17513:22;17505:6;17501:35;17496:3;17492:45;17485:52;;17356:191;;17556:357;17587:5;17584:1;17577:16;17616:4;17661;17658:1;17648:18;17688:1;17702:165;17716:6;17713:1;17710:13;17702:165;;;17794:14;;17781:11;;;17774:35;17837:16;;;;17731:10;;17702:165;;;17706:3;;;17896:6;17891:3;17887:16;17880:23;;17323:590;;;;;17138:781;;;;:::o;17924:197::-;18052:3;18077:38;18111:3;18103:6;18077:38;:::i;18126:543::-;18228:2;18223:3;18220:11;18217:446;;;18264:1;18288:5;18285:1;18278:16;18332:4;18329:1;18319:18;18402:2;18390:10;18386:19;18383:1;18379:27;18373:4;18369:38;18438:4;18426:10;18423:20;18420:47;;;-1:-1:-1;18461:4:150;18420:47;18516:2;18511:3;18507:12;18504:1;18500:20;18494:4;18490:31;18480:41;;18571:82;18589:2;18582:5;18579:13;18571:82;;;18634:17;;;18615:1;18604:13;18571:82;;;18575:3;;;18126:543;;;:::o;18905:1554::-;19024:3;19018:4;19015:13;19012:26;;19031:5;;18905:1554::o;19012:26::-;19061:37;19093:3;19087:10;19061:37;:::i;:::-;19121:18;19113:6;19110:30;19107:56;;;19143:18;;:::i;:::-;19172:97;19262:6;19222:38;19254:4;19248:11;19222:38;:::i;:::-;19216:4;19172:97;:::i;:::-;19295:1;19323:2;19315:6;19312:14;19340:1;19335:867;;;;20246:1;20263:6;20260:89;;;-1:-1:-1;20315:19:150;;;20309:26;20260:89;-1:-1:-1;;18802:1:150;18798:11;;;18794:84;18790:89;18780:100;18886:1;18882:11;;;18777:117;20362:81;;19305:1148;;19335:867;17085:1;17078:14;;;17122:4;17109:18;;-1:-1:-1;;19371:79:150;;;17085:1;17078:14;;;17122:4;17109:18;;19594:9;19616:251;19630:7;19627:1;19624:14;19616:251;;;19712:21;;;19706:28;19691:44;;19762:1;19835:18;;;;19790:15;;;;19653:4;19646:12;19616:251;;;19620:3;19895:6;19886:7;19883:19;19880:263;;;19956:21;;;19950:28;-1:-1:-1;;20041:1:150;20037:14;;;20053:3;20033:24;20029:97;20025:102;20010:118;19995:134;;19880:263;-1:-1:-1;;;;;20189:1:150;20173:14;;;20169:22;20156:36;;-1:-1:-1;18905:1554:150:o;20464:1464::-;20590:3;20584:10;20617:18;20609:6;20606:30;20603:56;;;20639:18;;:::i;:::-;20668:97;20758:6;20718:38;20750:4;20744:11;20718:38;:::i;20668:97::-;20820:4;;20877:2;20866:14;;20894:1;20889:782;;;;21715:1;21732:6;21729:89;;;-1:-1:-1;21784:19:150;;;21778:26;21729:89;-1:-1:-1;;18802:1:150;18798:11;;;18794:84;18790:89;18780:100;18886:1;18882:11;;;18777:117;21831:81;;20859:1063;;20889:782;17085:1;17078:14;;;17122:4;17109:18;;-1:-1:-1;;20925:79:150;;;21102:236;21116:7;21113:1;21110:14;21102:236;;;21205:19;;;21199:26;21184:42;;21297:27;;;;21265:1;21253:14;;;;21132:19;;21102:236;;;21106:3;21366:6;21357:7;21354:19;21351:261;;;21427:19;;;;21421:26;-1:-1:-1;;21522:3:150;21510:1;21506:14;;;21502:24;21498:97;21494:102;21479:118;21464:134;;;-1:-1:-1;;21658:1:150;21642:14;;;21638:22;21625:36;;-1:-1:-1;20464:1464:150:o;21933:184::-;-1:-1:-1;;;21982:1:150;21975:88;22082:4;22079:1;22072:15;22106:4;22103:1;22096:15;22821:440;23071:2;23060:9;23053:21;23034:4;23097:49;23142:2;23131:9;23127:18;14786:2;14774:15;;14821:12;14814:4;14805:14;;14798:36;14859:2;14850:12;;14709:159;23097:49;23194:9;23186:6;23182:22;23177:2;23166:9;23162:18;23155:50;23222:33;23248:6;23240;23222:33;:::i;23266:440::-;23516:2;23505:9;23498:21;23479:4;23542:49;23587:2;23576:9;23572:18;15303:2;15291:15;;15338:12;15331:4;15322:14;;15315:36;15376:2;15367:12;;15226:159;24084:496;24263:3;24301:6;24295:13;24317:66;24376:6;24371:3;24364:4;24356:6;24352:17;24317:66;:::i;:::-;24446:13;;24405:16;;;;24468:70;24446:13;24405:16;24515:4;24503:17;;24468:70;:::i;:::-;24554:20;;24084:496;-1:-1:-1;;;;24084:496:150:o;24585:664::-;24935:66;24930:3;24923:79;24905:3;25021:47;25064:2;25059:3;25055:12;25047:6;25021:47;:::i;:::-;25088:66;25077:78;;25184:31;25179:2;25171:11;;25164:52;25240:2;25232:11;;24585:664;-1:-1:-1;;;24585:664:150:o;25479:694::-;25822:66;25817:3;25810:79;25792:3;25918:6;25912:13;25934:75;26002:6;25997:2;25992:3;25988:12;25981:4;25973:6;25969:17;25934:75;:::i;:::-;26073:66;26068:2;26028:16;;;;26060:11;;;26053:87;-1:-1:-1;26164:2:150;26156:11;;25479:694;-1:-1:-1;25479:694:150:o;26178:764::-;26568:14;26563:3;26556:27;26538:3;26612:6;26606:13;26628:75;26696:6;26691:2;26686:3;26682:12;26675:4;26667:6;26663:17;26628:75;:::i;:::-;26767:3;26762:2;26722:16;;;26754:11;;;26747:24;26796:13;;26818:76;26796:13;26880:2;26872:11;;26865:4;26853:17;;26818:76;:::i;:::-;26914:17;26933:2;26910:26;;26178:764;-1:-1:-1;;;;26178:764:150:o;26947:918::-;27232:4;27280:3;27269:9;27265:19;27311:6;27300:9;27293:25;27337:2;27375:3;27370:2;27359:9;27355:18;27348:31;27399:6;27434;27428:13;27465:6;27457;27450:22;27503:3;27492:9;27488:19;27481:26;;27542:2;27534:6;27530:15;27516:29;;27563:1;27573:169;27587:6;27584:1;27581:13;27573:169;;;27648:13;;27636:26;;27717:15;;;;27682:12;;;;27609:1;27602:9;27573:169;;;-1:-1:-1;;27810:4:150;27798:17;;;;27793:2;27778:18;;27771:45;-1:-1:-1;;;27847:2:150;27832:18;27825:34;27759:3;26947:918;-1:-1:-1;;26947:918:150:o;28059:639::-;28309:6;28304:3;28297:19;28279:3;28335:2;28368;28363:3;28359:12;28400:6;28394:13;28465:2;28457:6;28453:15;28486:1;28496:175;28510:6;28507:1;28504:13;28496:175;;;28573:13;;28559:28;;28609:14;;;;28646:15;;;;28532:1;28525:9;28496:175;;;-1:-1:-1;28687:5:150;;28059:639;-1:-1:-1;;;;;;;28059:639:150:o;28703:184::-;-1:-1:-1;;;28752:1:150;28745:88;28852:4;28849:1;28842:15;28876:4;28873:1;28866:15","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testApprove()":"1aeb10a6","testApprove(address,uint256)":"fb44e83a","testBurn()":"e13aba48","testBurn(address,uint256,uint256)":"1037c205","testBurnInsufficientBalanceReverts(address,uint256,uint256)":"be4733bc","testInfiniteApproveTransferFrom()":"18eab016","testMetadata()":"5ad7ef92","testMint()":"9642ddaf","testMint(address,uint256)":"f28e093d","testMintOverMaxUintReverts()":"fa531f85","testNamespaceAccess()":"2d60f8a3","testSetUp()":"5babb758","testTransfer()":"d591221f","testTransfer(address,uint256)":"a0e70267","testTransferFrom()":"70557298","testTransferFrom(address,address,address,uint256,uint256)":"48186a7f","testTransferFromInsufficientAllowanceReverts()":"f63809d9","testTransferFromInsufficientAllowanceReverts(address,uint256,uint256)":"37e816d3","testTransferFromInsufficientBalanceReverts()":"7a715085","testTransferFromInsufficientBalanceReverts(address,uint256,uint256)":"7c0c5369","testTransferInsufficientBalanceReverts()":"3dc6c955","testTransferInsufficientBalanceReverts(address,uint256,uint256)":"e70629ce"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"testBurnInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInfiniteApproveTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintOverMaxUintReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNamespaceAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"approval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"approval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransferFromInsufficientAllowanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFromInsufficientAllowanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFromInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sendAmount\",\"type\":\"uint256\"}],\"name\":\"testTransferFromInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sendAmount\",\"type\":\"uint256\"}],\"name\":\"testTransferInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ERC20BaseTest.sol\":\"ERC20WithWorldTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798\",\"dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44\",\"dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35\",\"dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6\"]},\"node_modules/@latticexyz/store/src/EncodedLengths.sol\":{\"keccak256\":\"0xebc0a6efd611e02b15c05a382382b597fe059eba7f2a9e90da81eeb2f7666774\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00b2cac12599935e25ea0697e99fc9e6d5af6c1c982761996c16707d9cd6ca09\",\"dweb:/ipfs/QmXccFminkrFtDpNfx6X1pHvW7Tn1nA5XcGu9T17pJyZyK\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x15f698b7eabc062a00ff7a2e02db0ace2dd51f8bd2bc51a45dc0afa88f2ee658\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f774202c98ad394b3b62be93292512c633dec63bc931c190ed984656c2d54ec7\",\"dweb:/ipfs/Qmd2D9mvP8S88ad2Q8WU54saNVr3Pwc5stPqEKHwcpo8AT\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xd016a2e1260f5a81ff9a8dfac58d7947e114414df8cce7302a2629908ea5f18e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c558a6f3a5f540c0190fa6d642a094a185c5db1acfc2437c7dbde0340f00ac3\",\"dweb:/ipfs/QmViAHvR7U7HNfBiBZEMFiy1TTSHDFNiDzBfQSeLBShCky\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2\",\"dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg\"]},\"node_modules/@latticexyz/store/src/IEncodedLengthsErrors.sol\":{\"keccak256\":\"0x06bb49164f44acc8d51df7b75ecf2f7aeb9281f7a3b357cae7d8d58bd1700dfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719027f4cc60fea30ce01cd4f672462f41fac750ae802e91a1a6d37c929e11ba\",\"dweb:/ipfs/QmWi5DM2jT5V5SGP1afRmFyRgFvuZiGDX2PWHwP19HssF1\"]},\"node_modules/@latticexyz/store/src/IFieldLayoutErrors.sol\":{\"keccak256\":\"0xaef70c46e412bded1024ac82c957cea81c1d1ab11878a95635531e2ac9673a53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cda2c7dc02ee8f0163b1c8d0f3e1e05d48b2a009e5c7365d2418f17bc3455817\",\"dweb:/ipfs/QmXHDZuCPTxjHaeiEaJhA81koX2NJ3Gj1zt5WVWaz77FL8\"]},\"node_modules/@latticexyz/store/src/ISchemaErrors.sol\":{\"keccak256\":\"0x0ac3de36c9d0058a17fcd7f1a905132215fd16ea3ed3b5109de1de04ddd7c441\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f83fa2546009cfd16b3b3969dcec1d67c9d818d910177b885ba263b6a948c65d\",\"dweb:/ipfs/QmehywHdvFYBL9BTtoPsVVwJXsEA4Xjk8aPWoHw1R45KeY\"]},\"node_modules/@latticexyz/store/src/ISliceErrors.sol\":{\"keccak256\":\"0x72684b7dfc1b44537401ccf10d6120186d02323266fcc762bc81859985eded4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8d037b6937969ae54018ddf647eeaf5eb69a2b0bf9edf9456d3d270316b2883\",\"dweb:/ipfs/QmfYJeyAmzRqpn68FteiM97p5t17iBw62FCET4bK5g4w37\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x42515d1410333a3573f78a460576271ef62c16edad5cf771ef6287b83ca1c706\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a58d03c4cf420df57d2b2e2e7932daad877e46e89561b46e1fa9f593a701bdc\",\"dweb:/ipfs/QmeFmKS7J1WqqBAgXkyxxx2fGA8JzuGszUmVsV2T6DYtsL\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0x37e4d2f015dd4005ff9b3f711257c891027804bc268db1791984af4989951912\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4a566ea96b69211f503707f69a9f9012d5873a3fd57b3f221549f46a7518df6\",\"dweb:/ipfs/QmVgcE3JufJr3iyeV6xqkvS4YtDcy6Eqyram2yzWUhwoB4\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0x8606e9de37943c74beabb9ac9acd2132f951bed1ef79f2f4f3de83ed1f271f6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d13adeee7ae9e687bf1cd12a8c36223179685fc828a7c468ee9311c879401b08\",\"dweb:/ipfs/QmQeb2ArSoQpE6ujBbDj9LY3xqpVCPiz3bh9SLT6siE8RY\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x6574a30a2bbd8a0de21b2504c55effb8802fdeff62296af82a9380bd753adcc4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85a859c533f51b584a9a2e8a64d61b6cf6f69bfcff1b926ad787518b1cae9562\",\"dweb:/ipfs/QmVyjmyJ69ZeqaXHg91JtGLVahRfZ7KtWaessLWZ6rYk9p\"]},\"node_modules/@latticexyz/store/src/IStoreKernel.sol\":{\"keccak256\":\"0x37a23dcbabc5937a717f2fda636b6a97963ed4b5a96870a62dfb199a8b692f89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac9741ea6daf21f39699be11afd919ae3ec07df24d948aaaa6549456fefd7fc0\",\"dweb:/ipfs/QmeiPQkZitM4Pc3i6L87thU71Fs1JVWAgMqXnSK8VrCq75\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xdcf28b3293d4d6c1fe2808a8918c1b2122e4e0e49f2793c79ebd2b9ae210ff7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3d9cc80f549ed0c5b768aea69fb1b3c364bd4f85d193a3040c411b594d94db\",\"dweb:/ipfs/QmYYdY5CjPHiW5ucXihTva1eHsCPNqBsvL6zYYafH3ap4p\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0x9e91a73f93cc9ebc00c265c83177f6a3f8a156749a9261202e2845e12aeaa96b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a39280d87d22dd0a959d8f55925cb092dba1fee2f11d3dd8e3ffabed45a9ab6a\",\"dweb:/ipfs/QmRMBFLJtT2KN43Xz9P3vUNWxXrP8rLTNBFw2P6Z7EGeaS\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x120fd448da5806e09ecb5327ad4dba64df01d2ee7232de0979133627e87e24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a3cb151b2ddee217f330d61813b2dcd997de94940c903719f6d066a21467890\",\"dweb:/ipfs/Qmbes1RRY6KdtsMohp8834xXyipeQK9GJ41NfgXK1d1QAZ\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0xef6e7000b181c2991aeacbf99a9d886f8c4df88878b857713f851185b63a7811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b079b4773d140ab2c01bdb04facfa56a78f753aea7122fa445b2bfa133411392\",\"dweb:/ipfs/QmWYWKFpwtsPeGdCSxcANgxXUbwAuMMgR7iMVPDSCZxz2A\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0x842b07f2ff9df2e1ecf9bf424b0e5a77e1471c983d674cf86b76c365178d6cc5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4c2df8853b020aef1bb8615ac69d5512a9b5385b82c88e03b27dc521c9d007b\",\"dweb:/ipfs/QmWEDiJn69DvHsdrikrMWY8DERWPSeWwVYgPcunfq3yiT7\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x0d2a08030d21292ecbcc850d9111f3817d03f17cd5e02186894848a9152d79d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f30024c1613fb587aaba4c1dcb8e4e46ed765a2cebd5b63fbebd327d1bf13d3\",\"dweb:/ipfs/QmZzqSnPMYKDYwbFNvUFrvuazMUyQHzQ59w3A9x6juHAm7\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0xae6c03881fdfa56cba1879d9c9c6b52c2829e6a278a200176678d8da05a89345\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cad7dc4944c0518de2e7f99697485d365ae37aa6cad6967996377c2dd951fe4\",\"dweb:/ipfs/QmW3grFwr8BcgJmLfjLbj3FthnD7NRUBFMFiahbXztHPr7\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x7e735a4c7fa8b8a5fe2371d90801e3287ddb78efed69b31e1a76f0b7b153c4c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e6db36bd52144b6feeecd91a58fc311127a3892fc96c4171db5b570fe9876ee\",\"dweb:/ipfs/QmS6LqnTZvpMc4eiz5JowBoNnh3RYemG6JHjqtYucT1rQi\"]},\"node_modules/@latticexyz/store/src/Store.sol\":{\"keccak256\":\"0x8dcf87de5dbb768ea776ba17498a19cf74fbc454b1dfb239d52e42b7eaeeff0d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c868cb7b9f67cc71603aa86f1e5a38caff01133434067359fbfe816dd5562116\",\"dweb:/ipfs/QmWo8pkuJYYCzunTw2dHVKyP6DbwHFAD328Xay3tHApeGr\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x9513dc38e5baadde0ba9b08320a324043b0e88a10702be5c3507da8c3d45e861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c80c65a394763668e4aed69220fec6bb3ed847fb277ddd1ff1d4bfdf452da2\",\"dweb:/ipfs/QmRT2BATKtrYmixWMuWo9Cz8g8oscfLNSmvjxTyiTNA1pc\"]},\"node_modules/@latticexyz/store/src/StoreKernel.sol\":{\"keccak256\":\"0xeeb12eb8f8254eea33f4d3b80504962733c191f7cd4f4b1bc3033237e648ff0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b41567453f8f4f8c55b30d88d891b1ea87f2b5354ee8ce67ca58aedfb296ec\",\"dweb:/ipfs/QmZkGP7yKZUUnVxwAV4AVhHfc8Dnz1TtbyooeGBm33EUE7\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xb27eeadfa0075d2ac085b155e42e195b9bc6511640097af6646936f5ceb3afc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cdca315a580d561a7ec3d488ad6ea6996a4611031218547d6b942c7654750a18\",\"dweb:/ipfs/QmUrW9strzNK1guqRZ7jRC4GZ9SvAraxah3rfsw4eBGjZM\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0x7edf7c1641408f3a580eb28bda58054583cb846f875608612671c6d40712ba40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4146adef610d1daab085a81aa9f2d4fd8c4e5f459b9ef184f3ef23465573cf91\",\"dweb:/ipfs/QmQqZMsbkzSNG6VfYzQLdRCBCsNohBSVQmWoTP6QvKmKUP\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0x094a6f1e2910b345b6b254e0fc2c8882b3190c673f7ee19742e857057a4d3f85\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18908e2e7e878635abea72ef99851fddd204371e6b641f010e831ebfa0b1bfd4\",\"dweb:/ipfs/QmSNAxXqxTrzPkZ4rSAQgBnuer1yLPq74hoqnzrZV3WGsb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0xcc0fa969a57724e7a9184009e2b1ea8ecb209a06e283c6d2b6a15cabff35f39d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d91985b8f48fcb8259b776c10bc17a1656e8dbeaa15c0c0e73368af38e6cfc8a\",\"dweb:/ipfs/QmRiYbrXqqWcTrvwz95kN6ZiMhUBfLiUycxQiSGeZFDkuo\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0xa52e8323cc7227d69a3c6b2e244b4e0face106eeaa5cf23e759b0278b0f4a7ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf5d3ede2d114c26abe7b5268ed17aedb56d6ded91af19019ecebb75edf48b36\",\"dweb:/ipfs/QmWwqNFjqWFhfv8ABRXV9mbZBGumz741YCmVuQPqtiVZaD\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x155aa0e073774674596a28371a3a863ad1d6c44d418140269d2982a45e40734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c849ad6563c4afbdd7eec40042c9afa0d9919ece10c2acab390e358095ddd160\",\"dweb:/ipfs/QmbB7eVhKe3simEvugH18e1fBJKmwqionms3YWbWuRBDYV\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0x7930483bedccb95dd73447108e67d576924c83ec591cb70c699cdea7ebaabccc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c23093bf098e8e1f224a0e20beb6860d461a5f8d33265d382e3d43bdc431080\",\"dweb:/ipfs/QmSQwjDCEgTUgUWajjETvCRJd18ZPRhYPyS6Rcg6wDizXw\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x67e0d59237bd37424827ecde1ecdbe71f65376af517b0623cd8f8d5451bca7a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c5ec7fe73e06140957d44a3d9938587711c783ccbf08ff017638c9279a3168\",\"dweb:/ipfs/QmfS9ZRqHXmBJ1h5B4x4gbU6d18DtMgKZSkxhQgNVRxueu\"]},\"node_modules/@latticexyz/store/src/rightMask.sol\":{\"keccak256\":\"0x28887aab8ad5ca598927e59d702999ca6e3b3128f1cddd2b995a381c8d04b275\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7710847f4689b7f5b81436c7d52ae4395f244a2eebf8d398b2edd43accb06754\",\"dweb:/ipfs/QmTD2wYqryXTynHAn5Vf9wtjUUSGeCJWENZTnWtBAK38pa\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x4f29001e53690ce74fe405a6d0376a564c9c743d1631d36fab04331865e4d572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://138c80abd63225a3eeb01ebfa1f9288e188a7ee5b2266b275fb4ed31b5aa30e3\",\"dweb:/ipfs/QmdEx9uHgCCbTcetGwFH5a66Ft7ajmrMDXvP1fW7WjnnE2\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586\",\"dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x310523f7f3acca841e62fe50be8d8b042cad5b3c239cb1105d6623cf83e63152\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cc40ca233acf6502bc65677b381c05331dd7323953e54b5df969051e47f851e\",\"dweb:/ipfs/QmTxy9mhodT8drezB5K1kPR78AMaARomoJqDyaWpLuCKui\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x259ee545fd9dfd4767f0b7fef31f52fd3c54c4a1c6657d6fbda4927800c937b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a4e31efa9f476cd267af7c3e11fe0151252206a1f6407a80a4092444c2de8ea\",\"dweb:/ipfs/QmRF4gWYw33mFTMh7nX8DJ1qzx3Ko6yMsnxubzYTRppdyo\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x0e74ff88ec94cb33f79d8afc1497c4fdccf02db40ab47f3701c7d02fc305d4d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36b7cd0c2a3f2dcdc83ab7ac5a93f123746ce29c0f1000f2b275ad2c647ff0f3\",\"dweb:/ipfs/QmYdipHYUhHhS78wLdtmKZUK14FEwpto5mFy3rNeZssMLz\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x78c571906ee999ee7e56d4f7702b8a93c3a9e55e6b552aca115b5f6ac7f1c80a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9f141b2d556b2a2545e7db5606e8a038679a995a22aeaf1702cb3a60320b60a\",\"dweb:/ipfs/QmY7x258Fhj3TT3RT4sNyyfiRphVYdZXhtAnSYpasJ4xVQ\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0xad63bcf6f989720278b4b941cb3baca953d7da8064454323b99fb444c32e821e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37d43a10ec0972a2e9a939f22542dda802aa0124e6ee46a60ec59749de88d54b\",\"dweb:/ipfs/QmVe6ALUGg7xzVUjgsYW25ANPeCaLZwL3tJW6t8pGZejA1\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x1ad6ce468042f6ba104c8fa2cd5506e434e1bd458448492ae9e8d1993a7e5f1d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded3d879ad5a4119f9ff2320ff27f63a06bc3853e91d3697b3406ee3e6ab65d5\",\"dweb:/ipfs/QmTMjjArXQxXa3WeFF4dvvkAFSEstHTTsNYDCckgCBUVeE\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0xb9d3ad8030a8d111971cbf775c1834313736c2f714d2bcb90fe065a928abe2c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://702c7297150819d078d498d3c6ebbc9dc9414c35aaf1f8e19ae4c5beb5048c7d\",\"dweb:/ipfs/QmZxKTDNLvVDV4jJ6S2qu9HnPbSXq1hRfgazJAL1xWkSkt\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0x7cc2fbdd8ff6c996e19fab46c1031b76355da74973cebf45ce4df4b035d566bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://857d577f84a68018a3392ec4540c15e80326aaf4b0f224d0d239605abacfc0f3\",\"dweb:/ipfs/QmVEr3rTH1F1BFaCTMd7MmuceTqASwKBcMRnuFZ4tUAYmR\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0xe3d9074a1be3247be67ff4dd2c9e41481650ddaa799285a249736bb85673e33d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b6743ee1e6d0c74927bf17fc1da0cad7575aa7634871b94190ffbdb4c28c2a7\",\"dweb:/ipfs/Qma5bNsPJSBTesWxg3eAAMUBTDE7UjqWaHF7eMiGwP87jr\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0xbb926cf64e685bbf2770d60124664cc84ab70bd3038e17a074f2d472c3fc2c57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://143c3dcbdf1702dd4f9c869629609386c12f7c0247e88a6d062dc4d519ebe0d2\",\"dweb:/ipfs/QmQJSDd8uFL4sssw9fb9NHo4s6zjuDUgmrLHj3zsJuhMo1\"]},\"node_modules/@latticexyz/world/src/IModuleErrors.sol\":{\"keccak256\":\"0x60917e029779c81cfea1f5140c389269e51d7adb78987f39101b9e0d7bdad12d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://513f41920d67ca28c3e0fe247403c28a4d342785192df449c99d5f92db04fcea\",\"dweb:/ipfs/QmeAG2TtxAgcJQR4QxftuSvQrxisYQ1i1GZoyd7oeFQBDJ\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x81f1743d7ca6a9c7efc4997cf95e603ccb2070885265ca0e540f461aa7430721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93d99e78b541b33ecd501bf0cd407a78cef490fec8eaef2f188bddb9e293a99f\",\"dweb:/ipfs/QmPrcMDxwhvBZTr2AxoGqJA9L3Mjx27KBc98h3gXSsa3PM\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xb39e9d8cff4162e255f6c460ef9f9f0ad5b804627f745d967b2f10d0dd509299\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18d957cd87febccc00d82b9454047f0f5236250c9245befc0f57978671675255\",\"dweb:/ipfs/QmdZ1eXBd15vLpLVqTNJDAAaTzzucpRLD8GPJahLKT4J7x\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0x0abae6f4ed1b3070bddd0ed194c08b83a948b61ae959396202cf627bf1056a2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7037954f281cc0188a5aafc1d0cca0aabc110fd0234e6c43dca35ad69ed3baf\",\"dweb:/ipfs/Qmbv2nfK1qPpnoAbqNJFqWwo7AuyaX2ZEgZMFspMv7DR5B\"]},\"node_modules/@latticexyz/world/src/IWorldEvents.sol\":{\"keccak256\":\"0x39f6d8930db431c04158b85cc2a612c48d43dc81ec998f267076b12293c5d243\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d68f1543e5e166d639372d1aec57e3e193b5bb3b37270b6cb0488fab2c0ebe57\",\"dweb:/ipfs/QmdJUFDx87AHWFKP3jVrYg8xqAkiPfuT1M3tEotNt7KUoy\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0xdaa1e92439036e392fe79892819ae165732f416b831f84d38050ca3d958e549b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea8dc52e31a62e8971322ea9ed8f2e83d562ec199d7f93a392c293e96ff7f092\",\"dweb:/ipfs/QmSbM8MgHbrJLYP7uzemfZeC4xctqdyKDbspwHUsgeeVJC\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd99e81434439567e123dbade39850ea3e439ed7a33fe9a609ca6f1e08214908d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a00f6f27be952688d8db4ed77667d55219a56a04973db4d421a2776eb46da88b\",\"dweb:/ipfs/QmRqDmtDwZ8pXCcJFzwP7JDtUk86LmhWDrZBKy6q9UK9rz\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0xadcb32bdc444a4420909b738d81fa662dc63739455fe93d5aa89c93a3ccfd2dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d303094c84ebfb0f9f114c54ff4dfc68bfa1e526d0ebe304be6fbeb7cb2f0d3f\",\"dweb:/ipfs/QmYvUx1mNDhkxZFqxLeswW3w9HkvVqeoJiJKj1HN1SB7Gi\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x7488b4f48295e72946461b535263c01f38e2442c2d40eb61908ee355292b3e02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01da8950f3cb5d62182c6f13467a3731c241640995e9c89dca2d87ad05bf69b3\",\"dweb:/ipfs/QmPJK86FKgVfU17q14n8oV1EhYeSunpWyrCL1r3xc3gU5w\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x4f7eddc16b90adf81bd734c486d3fe4e5ccd530607a517ce4a4a6aceb75de517\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fbe73b7b0f920ea227a0eabbcefab1a2b3ae3cc16769450187feeb42a8ed96b\",\"dweb:/ipfs/Qmdq1Ae7ch1UWjStq35e1D13Lhth7iXLn1uTfrqFKsgzgx\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0x50ca52bdd89a9f27d6b03ad00ef45c8c5a6884ea9d75e18f8fa53524ac2feed9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55febdece37b291527094fb654919d4c8fe0b231792996a14c5e5cc76512b19e\",\"dweb:/ipfs/QmZHFbDDNmdFHWc1uTSvDgMUUgb8NgBPb1cDUJYajswbHT\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xaff9a22fac8a0f6eee5763b07a7ccb623c829d37922b85e42e914aad2ad417ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e598f0274d6d97c0a09806bf4fd1f0d054c310cf51b2123f5ce6380d6f3186ea\",\"dweb:/ipfs/QmaaVvqm21YsCgxozDyShcM17jKUXJhf2y26bk2YzPYZoM\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xfae8c0039cbe627d30c1d3c96d5b5c979ea05ac744472a63c345e030be8773e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42e034310f09682a2b52de0083f40e0aca75746bc4d4a738a72043c49ed2f52a\",\"dweb:/ipfs/QmTU2iSwXrJvLcLErmkBKxESxxpXhCAwUXxvG3AaHymJFy\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xe57042e82311847c56fa569377ed84459bf55afccdd3123312a5dff90c1d06f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://baf3258c9118bf16ba68ebcfecdb5e5ffc85d5c0cdc2815ca298283dfcff2c83\",\"dweb:/ipfs/QmcBVyUBR3PVejz7249VrEBMCMKHi72KoUXQ8DFmMmY48F\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0x6a4ef8460a4ba4acfa28f257578fef89bf0ad191d593b3499158e73138760bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1512d379b35f90288a7834389a2913a78a42b86a7052346e2ad82c0adbd4f895\",\"dweb:/ipfs/QmaUQjrXFQXR8F4LJqcBRgh5r3Q6KHmff3PrU2DVH8jEhv\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0x064f8e5de1d33dc43f8960c4511ab978f4f203db5be60b16455a33f81a44777b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ad396e3c7f780a924ab1e908f1713c7fbb3a734ecdd65f4cd82cd8414d3fa02\",\"dweb:/ipfs/QmSRacmErXTjGpfdsS1AdjbAXjpxj1GgnXEsA1FFJuvx2q\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x3e0400cba77c74f53f16357b20449cda64468b519c9bac437564af127766d45a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75387dc13d9d87e76bd3df827494c0288f48899c77dcfca0eaaac6cf45dd630b\",\"dweb:/ipfs/QmVK2tDx8q6XxttCZheEdEcLpTdKkLxgw446vyv1ToN2p2\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol\":{\"keccak256\":\"0xe08d3af994098120b5507c71a1c3558763b8c1a88c6eae506aa438c2af78f800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb0c47b16ff524140388765fe9ef99211dd7d9b9374dae09144a9956138de00c\",\"dweb:/ipfs/Qma8ibVu6WZs1hFW3hMnUykV3pPXGZhZ3xJwJXNj6Xu7aL\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0x4feb9f14aee9c9f94fc6df55d34c0c0e3994a3e6432817c07712cef729dee867\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2878a201cda27f77091becd4591bf0d868c3b7e7a80cae852778b85a374a3b8\",\"dweb:/ipfs/QmcMoHjHjeKK5sqsa9ddJL63Dzy9ZLQ2gyNoyirKpsxkSh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x25248669a093cfdc9453491e5b5806f6aa092a805569799650c43c32f7b7877d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f294f597122450abd267760d91682facd0a1040383caeb44aaadeb74770904a\",\"dweb:/ipfs/QmPXsoh8tUhpnhjdBYYTZCLc8MPHDZK6xUmN7F2DsMEXro\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x1ee313f4f1165034b92c5df1fe4cdd9be52b27780245388db3a0267c119fc926\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3d58ca6a58e94bc30d5be0fc7a7d1325a92096c8b8b2b3a0531c2c5d0d60791\",\"dweb:/ipfs/QmZSisbANqwnFzwMJnnYBjemLW4Cqn3oL7MkV4HiQR7GKv\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xe0b2ae91638eb7a609ce29428b3ab2a796f06558cf82cca9a258fd4ff06690dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://522872daab151f15b83bb63a41dd54bc9142b8875fabd43f4bdae209f7532fd1\",\"dweb:/ipfs/QmNRWboeoneiCkewk7BLp27yQCj7NE6DGNiaeWt6Z4jYtX\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol\":{\"keccak256\":\"0x28ecea550f7cef98318f2db2e203e758475306a6454f776e6dbc5094811d577e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01ae40d53747c2fec400c3bddec5789da6995a38e918bf3badad9c403e70d069\",\"dweb:/ipfs/QmaQhjyGzXjTR16gJUnpaBhG5zJvPdaxJ6c9yJY9FD5kBb\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x50a1f277a00f01e3cb97a85f0fc624ae2192a726136720b6a900b465a7aecc05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f3cd87cc0b905d5b75d134d95176630404e76c0f0a343cbd17b8338e1492c0b\",\"dweb:/ipfs/QmURFDNBdUWgh57apX9n7VF68rSQeQrpc5to4FFV6bbJgN\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x66193215d3c053675d67ba81d530ee2bb1c39250a15cf2d9a6fb166615af461d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b783be83ef27281fb6ae2166f692d0ec912bdbe4f49312181b1ef561b5098729\",\"dweb:/ipfs/Qmdtmq4mGtrqoFg4UWhxAevNfVXEUhp8fohRWycqKD2vCk\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0x3a53f395fc56398b4095c1e4016ad5f87d06236fc00f1fb85b9cfe138575b614\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d91d30c8506a2d07bcafe0f8feff002bbc7764060d7e7bef7f15b9c4a97c597\",\"dweb:/ipfs/QmVTAxSh1JSMpKD1jmJSTvXbDZQubdJW2DQDoePWecJskH\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xb857dd63073a6469f5bb8deb6c0617763cd42c484821e247572c6b53bb1da3cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07c710d67440b98b145c1991623b7c8cc7f0805b4e6fa37a7d54afcece31239e\",\"dweb:/ipfs/Qmb368QqzbQGUttbDS7eVBGQ8KcXhiai2F9vy3Thyyk2vx\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0xc27730dae8302cb86f5d65ddc9ae0e92afba17842285a6d0cd146a1e21d73c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de5f820f1dfe36e53fe1fc77be6a52ac5fa72a7a5d5ec66e5d29ca6ce553674\",\"dweb:/ipfs/QmP5JUMHDCBxZkZ2YnoYQLqQFHeyCpoUVp14hJBWpSdiqV\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xcb1e9fd5cd02cbb7125f2a64c02f89272d4b0f2afc0b43f24b727f023ef06493\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4a923e67dea1c1c0a978cbb89d4e27f6e0205f49efe0556ac90b358bd2062ab\",\"dweb:/ipfs/QmZww8gDH9kyXsCaTYWzupNhL1QqR1emAbb5VifFWhDWYF\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x1706fe4b5441a4e3982a3d32f7de2148627b8dfbbe3e38391dd4dab06b86478c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0569fa73cd26c6476188646194ad58eb5cf78cb7c7dc7722748455c23c9d4d7\",\"dweb:/ipfs/Qma1RuR12bTXSVJJ8Q8Gw23KkBw7pyV9u5Kr8TGutaxYdz\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0x3b8d434a81e5667242724089207f90001099d32095e05c4efd75931201d850b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73d47004e03e56b0d0e64ca9012219bc6ae01cef455d7e6ccab9f60dfc5e55b5\",\"dweb:/ipfs/QmQUcGYNEVBRs1oj1HgJ92SPNuiDL3YVYbBymGy63yxqDc\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22\",\"dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV\"]},\"node_modules/@latticexyz/world/src/modules/init/InitModule.sol\":{\"keccak256\":\"0xa94f674bf15e20feff8e2e4a5819818a59ffd1026a6c436358f21124481249b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f30b50afbe39a6271ce4082d0d8a30a2d563eb52c89432f2de9d47e7ae4b0771\",\"dweb:/ipfs/QmfEMVXKk8HvdiivYKPKsApRDar4G1bvjfwXvesRFZdVio\"]},\"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol\":{\"keccak256\":\"0x1aa994d09220ac38bd4f47e2be9f54e4b1a46ffb14be40552ac64998059105fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ba9f14551c18238056f6f5daf6166acc93c531f66cf32bbadb4142eca04a25\",\"dweb:/ipfs/QmQfiy93ewydVkwLdbUSXHn5K29r1SJaiw51sgoFWJXsmu\"]},\"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol\":{\"keccak256\":\"0x5aa1ad023ec7e30b102275af8f76e08d195e277fd89fb5fffd8436adf7dbc3f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5389a9204b6714c8494f169277ccfdcf43ab3d969cafddf8a5eb61d2a2b827a4\",\"dweb:/ipfs/QmVvkj8hEcUQZTvHptDe7fEZHnH9bnut6f3jaLSquPgBCw\"]},\"node_modules/@latticexyz/world/src/modules/init/constants.sol\":{\"keccak256\":\"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752\",\"dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8\"]},\"node_modules/@latticexyz/world/src/modules/init/functionSignatures.sol\":{\"keccak256\":\"0x22a231d9b772d582fa7785218912e183404eab1e7c4ab8b4afe8fe123ebf6234\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://969a745da85bd673861ab9faf3b702d4fbd16b575a6a76cbf5fe55c59efd6425\",\"dweb:/ipfs/QmU6hBi69WMnxWyxjJnzJeiKqs1e8CKPP6rra9WZKs5VU8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x7f8016dbd6ba13a93ef8fc2423bbaf5336e49f2cc8606df4e8312bb4353a49ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18d00c1f2c8d38eebbb16cd2cc2e5ed87be954a8ff602d25e04660c0b6214c33\",\"dweb:/ipfs/QmRRhn2JvfmdpmruRcfvZUkU5bfwpbTLk6FDPHgPnuGQMe\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0xefdca5fdc8a03302d09f0ccbe6211ca5a41b3de573c1d8fa221ef16bc6e4c3e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2686adae48585133be67273703a6d594a26ca6d6a55f62d553abbc47149646b1\",\"dweb:/ipfs/QmbW3mLPDK2WV3tEB8hwJEa47jYg4kstN6iJWHNaQeZxsp\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0x9d1498bdc2ef2ec0bf6d2beab2543ca826955d7e94a602351394b1a197efeeb5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://367299bcbe7df6683dc2a6d10838915ac0f7968739630e28900aa9c3e0833ea3\",\"dweb:/ipfs/QmZAiRh4YWhLHxv92A7YRTRYNeVLNWAYjdWd9QWFrzzQsq\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0x1be1b12b2b2c7ff519cbe503ddda58cd308a8067e9ff7a168f3833031cf3f93d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37cede506e9219fa7a1c518ece3fa6333ccad58b4b792629044288d2d9b9e8d1\",\"dweb:/ipfs/QmcFo72Bv2t5GFQgM71NNB7xNLnQwG39oE9KTrdaNsv9ZV\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xa176ed327805e7dfdd1b75c4c8f9fc203cb3f7c391f2547a08eab4b44059ad1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b017b00dac47516dbd1e5d3aeb97a41b6c39163d40b3a152d6f0e62e12493383\",\"dweb:/ipfs/QmawZd1RUjd8xUh12SWA3q3tNWheemqqZmi61a6JZ761TG\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0x5e5182dc571b54c6ff9511290fde12e370f8f7169bb8e12a8674b3386f81aa8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ce1cecb7dd333397ff5d9ed72876237c024f195886e056101f834fca058020\",\"dweb:/ipfs/QmWkJAa6iWQzfaETJvFJAqGMmu4ZpwnNXPpfKSRy38WuUR\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/createDelegation.sol\":{\"keccak256\":\"0xcc77f108d653e54c3556047d69421c4864324aabbc4d29afc64c8ee20b1b622e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://974668744ac9b5d267952c52a60a6e2018067761a019af9cecfd2fbb3fa9a4aa\",\"dweb:/ipfs/QmaiBpSkRwLRGgB6GjWL2dAYVe78yKtmBDpodBKpBrY2Fz\"]},\"node_modules/@latticexyz/world/src/modules/init/types.sol\":{\"keccak256\":\"0x81b75eb286ec515bde6cbb16c3d089054abb530b744865bbace68343d23177bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc77bd51e24da666260bb48c44ff611869fb2e550921d732e5aac84a1f09525\",\"dweb:/ipfs/QmeU5N4yeRh5nEA65pvGtQQJNv1GvEPy4PkhMVRYRMoMvh\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x5b94a21fd46abb4aac8f38809c0d6105f30792042c927f8a6a4f40cfe35c7ab8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bade9d52cf370f3b5435abb47a5338dca5498bee773e97518e7a080fa882940\",\"dweb:/ipfs/QmTtaXUWwMQmHW8oKEoRZxagidZcCiN3oLQs7kN3nycrkW\"]},\"node_modules/@latticexyz/world/src/requireNamespace.sol\":{\"keccak256\":\"0xda4a4a55bde8e55c28472d37009a194aa221ad11feb233d1c17a87b303977567\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef691f35102f6ce85cc1cdaf3ec29b4ba632384a0358629dd642292c709f34e5\",\"dweb:/ipfs/QmYuewEaRZ1UWxd231AK4SpjsiLrd7o4nyaPTeEzLCswcc\"]},\"node_modules/@latticexyz/world/src/requireValidNamespace.sol\":{\"keccak256\":\"0x361f8259c4a5ba355b2aad118befe00f7fe5169be730d6c0ca11ab7a863bd6fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccc850a1ea57e900d85e2c5fac02c36d55b42d2345b439ea7044ea42f5a49c01\",\"dweb:/ipfs/QmVShgn2FgTTg9QGnL5Fzhovowmu1C7fABKLJTxbewZzEG\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0xa1147f218a0152b153d4e8bada0f606bfed40ac1f184fd16a941c2d0033c53f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f5e0f6d1b51a3a04d4bd84537b2ced373b32824898cf6fbfd13ae1cbdf06359\",\"dweb:/ipfs/QmayYRmBZRUV9m4UnFxuC62VvHriXhkYXeH3HibZ3Gmxxf\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0x15c25ae4b21e091209970e45a198cb51f31eeae482828862641099c1a9b2448a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ce3c3eb58dc5c262d36babf372ad028d2846beea73a59d6e70f0eb8c90ee00d\",\"dweb:/ipfs/QmWUkgegTRtSJM3awvjg4J7DWZ2ME7Pnxp1dP2TWWzLNoo\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x9c222a00d7aef686e6f6319d544959ee8a7010c7c0692738f7fe9d19694b0715\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0296e6e111eeb4f6249fea39ee3b024a02f46eb692925d9b41e3b39fa15a940b\",\"dweb:/ipfs/QmbSYepReq4NepkvLEkeTtGXRwFpQRUfyENnjkd4kaM4BU\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xeb042e7d3638430f6fd394107f3237cf14e4325154f0098624e8a7826584d465\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e0b8eb87616b661f5a4f2fd7e1a727bd19b7fd8d40ad3d93fda26822f433ea\",\"dweb:/ipfs/QmacYMatKV9pwEwirVRY9a6r89RoNs5yk99ic37ieWA8Dk\"]},\"node_modules/@latticexyz/world/test/createInitModule.sol\":{\"keccak256\":\"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc\",\"dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa\"]},\"node_modules/@latticexyz/world/test/createWorld.sol\":{\"keccak256\":\"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4\",\"dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/Constants.sol\":{\"keccak256\":\"0x4d66474d3c0d5bf9b34b539a9382627c405b1e0f620914d66e83c1f2589f670c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a1a01fb1d0b6889828d36f830466103bb6da29eafd46ac6eb6d0650a05c2857\",\"dweb:/ipfs/QmakjCNnnkhMLYjfwgoTdfZwzuMtJVNGcbyzxGYypcQ91Y\"]},\"src/Context.sol\":{\"keccak256\":\"0xb0760347c3793f7b8597ed2b6bfa0533f3dae95a07675bf6518be3e42844fe68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52b6603e17f042c7cc0911d1003a86e7e48a20398426baec01f8c4b1d4c35e28\",\"dweb:/ipfs/QmUAUBgpMwWLiWeNrrmuWC4DtocgY8DA3JXQfQZQ2tBvSK\"]},\"src/MUDERC20.sol\":{\"keccak256\":\"0x949868bbeda93225b2b116705196697cf4ff963c42f42456d0151c3f032539fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d2dd34c096ed994dbc9edda5e6eb43e7cf9f8f3792f95662cbbd42084eedd56\",\"dweb:/ipfs/QmeNAxxhRiBWmRwQ1eBuyR4pNhA5asg2gEYULbrzsuGt2A\"]},\"src/StoreConsumer.sol\":{\"keccak256\":\"0xc143e0167b1192b9b12ed71a0398cca24ef23154a3fad145bc3cb7ed2def6855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4546ea4a5154c7643789d431813fba68071f80bb26b35d4b57b4f0c6e8b0aa36\",\"dweb:/ipfs/QmVWNWpuwDJYToHs4woPdZsZ66HwVaCUsZmKsJ3cW3cd9s\"]},\"src/WithStore.sol\":{\"keccak256\":\"0xb3e56f54027a41cd43d18118764704dc070ebc3cf289dc1ff9f986a2b1767c98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4adde5e6d73ea36a564eb7a22adf900205023ec154573209bbec3333fbfb6044\",\"dweb:/ipfs/QmSc6rGweukMeKRwxtb8678N8wgQmNYVwRTU1TSd8Bo5v6\"]},\"src/WithWorld.sol\":{\"keccak256\":\"0x3f34b0928247bedde1e7eb2e842bb13713f0e428d18a72f6a3156cd891ddb714\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6d95605baf0b91648795d04103f2601087e4f64075a22cb19a0880c0ab86638\",\"dweb:/ipfs/QmTS2Vhnx8BJUzoUNLKDVLtNZnw6ZYTxnHwFfyavmnqpvp\"]},\"src/codegen/tables/Allowances.sol\":{\"keccak256\":\"0x51bdf129e0b116fd8ec04c2a292ce00a3211b5ddd0fe1313ff252be0f6c915d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5b8e2f4cc58db358e38b386d21b2c575fa4ae573e12487cbe56f7bec753f43a2\",\"dweb:/ipfs/QmQUEomWFs9kHM1BiBkDMnu8pFxdn7XEUaidxW5bWwDeqt\"]},\"src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x6397f165aed38d2e921a0ae4f280f8079e0241d24bce2915c99ce69ea036b0cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b9ecc3fe44da5dc9c2532d85b288f6d9dfc28ea5a0899fe32faa1d7d78bd047\",\"dweb:/ipfs/QmayMhjNZJNRKjyxC7AEXkx87ePDu4rNVqZ7eDRTzk8Jrc\"]},\"src/codegen/tables/ERC20Metadata.sol\":{\"keccak256\":\"0xb90f1f9f228a91b4e558d5d40bfbdb7c0970f3d57b5afe9f77fd20fab8969b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56090ae6307d15fc2d86ef240dc5e0b3d338de1d5873faf0d2894d2018ca4a03\",\"dweb:/ipfs/QmWWbqFBZtVQffPtmNv8b9B7dRDtNYY5HvUbdYyBr6YxXS\"]},\"src/codegen/tables/TotalSupply.sol\":{\"keccak256\":\"0x7021c83769d9c4e3d4026101d625c6c42cd972ff1c77ec121780ef42c161d933\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eae00cc4fda10f7cb5ea3007a00158227501f4c0a3236ec9c69c3d005704502a\",\"dweb:/ipfs/QmTfbddu92e2a6TnXZyVpk9zKTaHcyqGnaWtdh1jwm3DVB\"]},\"src/interfaces/IERC20.sol\":{\"keccak256\":\"0x9801fd978d8e6975ee67acb04fdee0aa5c18bf47d87ca2793f333a17a6b73607\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe4f5fb71afd859c3d0e88a8c0619ca52f5c20c2d37cb8a1bcc71576e6ce08db\",\"dweb:/ipfs/QmQNvL3G6JX71y9f7wt94Pc2RqJCEAcv54yYDJ8hi9oxs1\"]},\"src/interfaces/IERC20Errors.sol\":{\"keccak256\":\"0x704a9e25590a92a80d153552fbe79a83fe0a80a8f6eaa8d2ccaca70649e40fce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e6ae9510a9c5023299a1064c945b652336a31f5cd225bbe9a72f9e2fd81ada2\",\"dweb:/ipfs/QmdvTCUs3ZiP5unHGdwJz3MxAR5b7K7bYVTZjBT8xadBVR\"]},\"src/interfaces/IERC20Events.sol\":{\"keccak256\":\"0xee632339ff14c1e5e6994ce3c605799761f24f40093cabf3b091f6dcbd9ef8ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0c7a33110c14cfc32011bda15c4330d8f193d133c1f34448f1566f44a0663bd\",\"dweb:/ipfs/QmadwRXGu4H2H3WxgEchXTyLx5PKSLZd7VHvRPEZ5zAgaZ\"]},\"src/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0xc26cdadf0232c5b579132de5dce1909c59e93c82b4a8f13802d1aa295b96d5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffc3d4d1328d66c454ddf2530894ad572fc69d220a3da0d0d4f3e1b7c8b1938\",\"dweb:/ipfs/QmapyHXE8KWktGksfNsQxUbhoCjobGTGEzmjY2yBAXvbzD\"]},\"test/ERC20BaseTest.sol\":{\"keccak256\":\"0x72ba1233b66c5cc710499933ac3444fb672030c9f7afb953e2c3d7bfc4a9597c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751cc93c15b30b741aaaa4e02690abe3a3d7f6320f1cd781ba0084a6760cf2be\",\"dweb:/ipfs/QmRs63YpoaggRKjSFqspSG93cuP4cEGfDsoyQXnmHpSsdK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testBurnInsufficientBalanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInfiniteApproveTransferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMetadata"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintOverMaxUintReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNamespaceAccess"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSetUp"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransfer"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransfer"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"approval","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"approval","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientAllowanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientAllowanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientBalanceReverts"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"sendAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientBalanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferInsufficientBalanceReverts"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"sendAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferInsufficientBalanceReverts"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/ERC20BaseTest.sol":"ERC20WithWorldTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd","urls":["bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798","dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a","urls":["bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44","dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8","urls":["bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35","dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6"],"license":"MIT"},"node_modules/@latticexyz/store/src/EncodedLengths.sol":{"keccak256":"0xebc0a6efd611e02b15c05a382382b597fe059eba7f2a9e90da81eeb2f7666774","urls":["bzz-raw://00b2cac12599935e25ea0697e99fc9e6d5af6c1c982761996c16707d9cd6ca09","dweb:/ipfs/QmXccFminkrFtDpNfx6X1pHvW7Tn1nA5XcGu9T17pJyZyK"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x15f698b7eabc062a00ff7a2e02db0ace2dd51f8bd2bc51a45dc0afa88f2ee658","urls":["bzz-raw://f774202c98ad394b3b62be93292512c633dec63bc931c190ed984656c2d54ec7","dweb:/ipfs/Qmd2D9mvP8S88ad2Q8WU54saNVr3Pwc5stPqEKHwcpo8AT"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xd016a2e1260f5a81ff9a8dfac58d7947e114414df8cce7302a2629908ea5f18e","urls":["bzz-raw://0c558a6f3a5f540c0190fa6d642a094a185c5db1acfc2437c7dbde0340f00ac3","dweb:/ipfs/QmViAHvR7U7HNfBiBZEMFiy1TTSHDFNiDzBfQSeLBShCky"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927","urls":["bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2","dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IEncodedLengthsErrors.sol":{"keccak256":"0x06bb49164f44acc8d51df7b75ecf2f7aeb9281f7a3b357cae7d8d58bd1700dfa","urls":["bzz-raw://719027f4cc60fea30ce01cd4f672462f41fac750ae802e91a1a6d37c929e11ba","dweb:/ipfs/QmWi5DM2jT5V5SGP1afRmFyRgFvuZiGDX2PWHwP19HssF1"],"license":"MIT"},"node_modules/@latticexyz/store/src/IFieldLayoutErrors.sol":{"keccak256":"0xaef70c46e412bded1024ac82c957cea81c1d1ab11878a95635531e2ac9673a53","urls":["bzz-raw://cda2c7dc02ee8f0163b1c8d0f3e1e05d48b2a009e5c7365d2418f17bc3455817","dweb:/ipfs/QmXHDZuCPTxjHaeiEaJhA81koX2NJ3Gj1zt5WVWaz77FL8"],"license":"MIT"},"node_modules/@latticexyz/store/src/ISchemaErrors.sol":{"keccak256":"0x0ac3de36c9d0058a17fcd7f1a905132215fd16ea3ed3b5109de1de04ddd7c441","urls":["bzz-raw://f83fa2546009cfd16b3b3969dcec1d67c9d818d910177b885ba263b6a948c65d","dweb:/ipfs/QmehywHdvFYBL9BTtoPsVVwJXsEA4Xjk8aPWoHw1R45KeY"],"license":"MIT"},"node_modules/@latticexyz/store/src/ISliceErrors.sol":{"keccak256":"0x72684b7dfc1b44537401ccf10d6120186d02323266fcc762bc81859985eded4c","urls":["bzz-raw://e8d037b6937969ae54018ddf647eeaf5eb69a2b0bf9edf9456d3d270316b2883","dweb:/ipfs/QmfYJeyAmzRqpn68FteiM97p5t17iBw62FCET4bK5g4w37"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x42515d1410333a3573f78a460576271ef62c16edad5cf771ef6287b83ca1c706","urls":["bzz-raw://6a58d03c4cf420df57d2b2e2e7932daad877e46e89561b46e1fa9f593a701bdc","dweb:/ipfs/QmeFmKS7J1WqqBAgXkyxxx2fGA8JzuGszUmVsV2T6DYtsL"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0x37e4d2f015dd4005ff9b3f711257c891027804bc268db1791984af4989951912","urls":["bzz-raw://a4a566ea96b69211f503707f69a9f9012d5873a3fd57b3f221549f46a7518df6","dweb:/ipfs/QmVgcE3JufJr3iyeV6xqkvS4YtDcy6Eqyram2yzWUhwoB4"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0x8606e9de37943c74beabb9ac9acd2132f951bed1ef79f2f4f3de83ed1f271f6a","urls":["bzz-raw://d13adeee7ae9e687bf1cd12a8c36223179685fc828a7c468ee9311c879401b08","dweb:/ipfs/QmQeb2ArSoQpE6ujBbDj9LY3xqpVCPiz3bh9SLT6siE8RY"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x6574a30a2bbd8a0de21b2504c55effb8802fdeff62296af82a9380bd753adcc4","urls":["bzz-raw://85a859c533f51b584a9a2e8a64d61b6cf6f69bfcff1b926ad787518b1cae9562","dweb:/ipfs/QmVyjmyJ69ZeqaXHg91JtGLVahRfZ7KtWaessLWZ6rYk9p"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreKernel.sol":{"keccak256":"0x37a23dcbabc5937a717f2fda636b6a97963ed4b5a96870a62dfb199a8b692f89","urls":["bzz-raw://ac9741ea6daf21f39699be11afd919ae3ec07df24d948aaaa6549456fefd7fc0","dweb:/ipfs/QmeiPQkZitM4Pc3i6L87thU71Fs1JVWAgMqXnSK8VrCq75"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xdcf28b3293d4d6c1fe2808a8918c1b2122e4e0e49f2793c79ebd2b9ae210ff7b","urls":["bzz-raw://bb3d9cc80f549ed0c5b768aea69fb1b3c364bd4f85d193a3040c411b594d94db","dweb:/ipfs/QmYYdY5CjPHiW5ucXihTva1eHsCPNqBsvL6zYYafH3ap4p"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0x9e91a73f93cc9ebc00c265c83177f6a3f8a156749a9261202e2845e12aeaa96b","urls":["bzz-raw://a39280d87d22dd0a959d8f55925cb092dba1fee2f11d3dd8e3ffabed45a9ab6a","dweb:/ipfs/QmRMBFLJtT2KN43Xz9P3vUNWxXrP8rLTNBFw2P6Z7EGeaS"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x120fd448da5806e09ecb5327ad4dba64df01d2ee7232de0979133627e87e24ba","urls":["bzz-raw://7a3cb151b2ddee217f330d61813b2dcd997de94940c903719f6d066a21467890","dweb:/ipfs/Qmbes1RRY6KdtsMohp8834xXyipeQK9GJ41NfgXK1d1QAZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0xef6e7000b181c2991aeacbf99a9d886f8c4df88878b857713f851185b63a7811","urls":["bzz-raw://b079b4773d140ab2c01bdb04facfa56a78f753aea7122fa445b2bfa133411392","dweb:/ipfs/QmWYWKFpwtsPeGdCSxcANgxXUbwAuMMgR7iMVPDSCZxz2A"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0x842b07f2ff9df2e1ecf9bf424b0e5a77e1471c983d674cf86b76c365178d6cc5","urls":["bzz-raw://f4c2df8853b020aef1bb8615ac69d5512a9b5385b82c88e03b27dc521c9d007b","dweb:/ipfs/QmWEDiJn69DvHsdrikrMWY8DERWPSeWwVYgPcunfq3yiT7"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x0d2a08030d21292ecbcc850d9111f3817d03f17cd5e02186894848a9152d79d7","urls":["bzz-raw://3f30024c1613fb587aaba4c1dcb8e4e46ed765a2cebd5b63fbebd327d1bf13d3","dweb:/ipfs/QmZzqSnPMYKDYwbFNvUFrvuazMUyQHzQ59w3A9x6juHAm7"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0xae6c03881fdfa56cba1879d9c9c6b52c2829e6a278a200176678d8da05a89345","urls":["bzz-raw://3cad7dc4944c0518de2e7f99697485d365ae37aa6cad6967996377c2dd951fe4","dweb:/ipfs/QmW3grFwr8BcgJmLfjLbj3FthnD7NRUBFMFiahbXztHPr7"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x7e735a4c7fa8b8a5fe2371d90801e3287ddb78efed69b31e1a76f0b7b153c4c3","urls":["bzz-raw://9e6db36bd52144b6feeecd91a58fc311127a3892fc96c4171db5b570fe9876ee","dweb:/ipfs/QmS6LqnTZvpMc4eiz5JowBoNnh3RYemG6JHjqtYucT1rQi"],"license":"MIT"},"node_modules/@latticexyz/store/src/Store.sol":{"keccak256":"0x8dcf87de5dbb768ea776ba17498a19cf74fbc454b1dfb239d52e42b7eaeeff0d","urls":["bzz-raw://c868cb7b9f67cc71603aa86f1e5a38caff01133434067359fbfe816dd5562116","dweb:/ipfs/QmWo8pkuJYYCzunTw2dHVKyP6DbwHFAD328Xay3tHApeGr"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x9513dc38e5baadde0ba9b08320a324043b0e88a10702be5c3507da8c3d45e861","urls":["bzz-raw://99c80c65a394763668e4aed69220fec6bb3ed847fb277ddd1ff1d4bfdf452da2","dweb:/ipfs/QmRT2BATKtrYmixWMuWo9Cz8g8oscfLNSmvjxTyiTNA1pc"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreKernel.sol":{"keccak256":"0xeeb12eb8f8254eea33f4d3b80504962733c191f7cd4f4b1bc3033237e648ff0b","urls":["bzz-raw://01b41567453f8f4f8c55b30d88d891b1ea87f2b5354ee8ce67ca58aedfb296ec","dweb:/ipfs/QmZkGP7yKZUUnVxwAV4AVhHfc8Dnz1TtbyooeGBm33EUE7"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xb27eeadfa0075d2ac085b155e42e195b9bc6511640097af6646936f5ceb3afc6","urls":["bzz-raw://cdca315a580d561a7ec3d488ad6ea6996a4611031218547d6b942c7654750a18","dweb:/ipfs/QmUrW9strzNK1guqRZ7jRC4GZ9SvAraxah3rfsw4eBGjZM"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0x7edf7c1641408f3a580eb28bda58054583cb846f875608612671c6d40712ba40","urls":["bzz-raw://4146adef610d1daab085a81aa9f2d4fd8c4e5f459b9ef184f3ef23465573cf91","dweb:/ipfs/QmQqZMsbkzSNG6VfYzQLdRCBCsNohBSVQmWoTP6QvKmKUP"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0x094a6f1e2910b345b6b254e0fc2c8882b3190c673f7ee19742e857057a4d3f85","urls":["bzz-raw://18908e2e7e878635abea72ef99851fddd204371e6b641f010e831ebfa0b1bfd4","dweb:/ipfs/QmSNAxXqxTrzPkZ4rSAQgBnuer1yLPq74hoqnzrZV3WGsb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0xcc0fa969a57724e7a9184009e2b1ea8ecb209a06e283c6d2b6a15cabff35f39d","urls":["bzz-raw://d91985b8f48fcb8259b776c10bc17a1656e8dbeaa15c0c0e73368af38e6cfc8a","dweb:/ipfs/QmRiYbrXqqWcTrvwz95kN6ZiMhUBfLiUycxQiSGeZFDkuo"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0xa52e8323cc7227d69a3c6b2e244b4e0face106eeaa5cf23e759b0278b0f4a7ab","urls":["bzz-raw://bf5d3ede2d114c26abe7b5268ed17aedb56d6ded91af19019ecebb75edf48b36","dweb:/ipfs/QmWwqNFjqWFhfv8ABRXV9mbZBGumz741YCmVuQPqtiVZaD"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0x155aa0e073774674596a28371a3a863ad1d6c44d418140269d2982a45e40734b","urls":["bzz-raw://c849ad6563c4afbdd7eec40042c9afa0d9919ece10c2acab390e358095ddd160","dweb:/ipfs/QmbB7eVhKe3simEvugH18e1fBJKmwqionms3YWbWuRBDYV"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0x7930483bedccb95dd73447108e67d576924c83ec591cb70c699cdea7ebaabccc","urls":["bzz-raw://5c23093bf098e8e1f224a0e20beb6860d461a5f8d33265d382e3d43bdc431080","dweb:/ipfs/QmSQwjDCEgTUgUWajjETvCRJd18ZPRhYPyS6Rcg6wDizXw"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x67e0d59237bd37424827ecde1ecdbe71f65376af517b0623cd8f8d5451bca7a6","urls":["bzz-raw://09c5ec7fe73e06140957d44a3d9938587711c783ccbf08ff017638c9279a3168","dweb:/ipfs/QmfS9ZRqHXmBJ1h5B4x4gbU6d18DtMgKZSkxhQgNVRxueu"],"license":"MIT"},"node_modules/@latticexyz/store/src/rightMask.sol":{"keccak256":"0x28887aab8ad5ca598927e59d702999ca6e3b3128f1cddd2b995a381c8d04b275","urls":["bzz-raw://7710847f4689b7f5b81436c7d52ae4395f244a2eebf8d398b2edd43accb06754","dweb:/ipfs/QmTD2wYqryXTynHAn5Vf9wtjUUSGeCJWENZTnWtBAK38pa"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x4f29001e53690ce74fe405a6d0376a564c9c743d1631d36fab04331865e4d572","urls":["bzz-raw://138c80abd63225a3eeb01ebfa1f9288e188a7ee5b2266b275fb4ed31b5aa30e3","dweb:/ipfs/QmdEx9uHgCCbTcetGwFH5a66Ft7ajmrMDXvP1fW7WjnnE2"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261","urls":["bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586","dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x310523f7f3acca841e62fe50be8d8b042cad5b3c239cb1105d6623cf83e63152","urls":["bzz-raw://1cc40ca233acf6502bc65677b381c05331dd7323953e54b5df969051e47f851e","dweb:/ipfs/QmTxy9mhodT8drezB5K1kPR78AMaARomoJqDyaWpLuCKui"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x259ee545fd9dfd4767f0b7fef31f52fd3c54c4a1c6657d6fbda4927800c937b3","urls":["bzz-raw://0a4e31efa9f476cd267af7c3e11fe0151252206a1f6407a80a4092444c2de8ea","dweb:/ipfs/QmRF4gWYw33mFTMh7nX8DJ1qzx3Ko6yMsnxubzYTRppdyo"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0x0e74ff88ec94cb33f79d8afc1497c4fdccf02db40ab47f3701c7d02fc305d4d8","urls":["bzz-raw://36b7cd0c2a3f2dcdc83ab7ac5a93f123746ce29c0f1000f2b275ad2c647ff0f3","dweb:/ipfs/QmYdipHYUhHhS78wLdtmKZUK14FEwpto5mFy3rNeZssMLz"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x78c571906ee999ee7e56d4f7702b8a93c3a9e55e6b552aca115b5f6ac7f1c80a","urls":["bzz-raw://a9f141b2d556b2a2545e7db5606e8a038679a995a22aeaf1702cb3a60320b60a","dweb:/ipfs/QmY7x258Fhj3TT3RT4sNyyfiRphVYdZXhtAnSYpasJ4xVQ"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0xad63bcf6f989720278b4b941cb3baca953d7da8064454323b99fb444c32e821e","urls":["bzz-raw://37d43a10ec0972a2e9a939f22542dda802aa0124e6ee46a60ec59749de88d54b","dweb:/ipfs/QmVe6ALUGg7xzVUjgsYW25ANPeCaLZwL3tJW6t8pGZejA1"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x1ad6ce468042f6ba104c8fa2cd5506e434e1bd458448492ae9e8d1993a7e5f1d","urls":["bzz-raw://ded3d879ad5a4119f9ff2320ff27f63a06bc3853e91d3697b3406ee3e6ab65d5","dweb:/ipfs/QmTMjjArXQxXa3WeFF4dvvkAFSEstHTTsNYDCckgCBUVeE"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0xb9d3ad8030a8d111971cbf775c1834313736c2f714d2bcb90fe065a928abe2c8","urls":["bzz-raw://702c7297150819d078d498d3c6ebbc9dc9414c35aaf1f8e19ae4c5beb5048c7d","dweb:/ipfs/QmZxKTDNLvVDV4jJ6S2qu9HnPbSXq1hRfgazJAL1xWkSkt"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0x7cc2fbdd8ff6c996e19fab46c1031b76355da74973cebf45ce4df4b035d566bf","urls":["bzz-raw://857d577f84a68018a3392ec4540c15e80326aaf4b0f224d0d239605abacfc0f3","dweb:/ipfs/QmVEr3rTH1F1BFaCTMd7MmuceTqASwKBcMRnuFZ4tUAYmR"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0xe3d9074a1be3247be67ff4dd2c9e41481650ddaa799285a249736bb85673e33d","urls":["bzz-raw://0b6743ee1e6d0c74927bf17fc1da0cad7575aa7634871b94190ffbdb4c28c2a7","dweb:/ipfs/Qma5bNsPJSBTesWxg3eAAMUBTDE7UjqWaHF7eMiGwP87jr"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0xbb926cf64e685bbf2770d60124664cc84ab70bd3038e17a074f2d472c3fc2c57","urls":["bzz-raw://143c3dcbdf1702dd4f9c869629609386c12f7c0247e88a6d062dc4d519ebe0d2","dweb:/ipfs/QmQJSDd8uFL4sssw9fb9NHo4s6zjuDUgmrLHj3zsJuhMo1"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModuleErrors.sol":{"keccak256":"0x60917e029779c81cfea1f5140c389269e51d7adb78987f39101b9e0d7bdad12d","urls":["bzz-raw://513f41920d67ca28c3e0fe247403c28a4d342785192df449c99d5f92db04fcea","dweb:/ipfs/QmeAG2TtxAgcJQR4QxftuSvQrxisYQ1i1GZoyd7oeFQBDJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x81f1743d7ca6a9c7efc4997cf95e603ccb2070885265ca0e540f461aa7430721","urls":["bzz-raw://93d99e78b541b33ecd501bf0cd407a78cef490fec8eaef2f188bddb9e293a99f","dweb:/ipfs/QmPrcMDxwhvBZTr2AxoGqJA9L3Mjx27KBc98h3gXSsa3PM"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xb39e9d8cff4162e255f6c460ef9f9f0ad5b804627f745d967b2f10d0dd509299","urls":["bzz-raw://18d957cd87febccc00d82b9454047f0f5236250c9245befc0f57978671675255","dweb:/ipfs/QmdZ1eXBd15vLpLVqTNJDAAaTzzucpRLD8GPJahLKT4J7x"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0x0abae6f4ed1b3070bddd0ed194c08b83a948b61ae959396202cf627bf1056a2b","urls":["bzz-raw://a7037954f281cc0188a5aafc1d0cca0aabc110fd0234e6c43dca35ad69ed3baf","dweb:/ipfs/Qmbv2nfK1qPpnoAbqNJFqWwo7AuyaX2ZEgZMFspMv7DR5B"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldEvents.sol":{"keccak256":"0x39f6d8930db431c04158b85cc2a612c48d43dc81ec998f267076b12293c5d243","urls":["bzz-raw://d68f1543e5e166d639372d1aec57e3e193b5bb3b37270b6cb0488fab2c0ebe57","dweb:/ipfs/QmdJUFDx87AHWFKP3jVrYg8xqAkiPfuT1M3tEotNt7KUoy"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0xdaa1e92439036e392fe79892819ae165732f416b831f84d38050ca3d958e549b","urls":["bzz-raw://ea8dc52e31a62e8971322ea9ed8f2e83d562ec199d7f93a392c293e96ff7f092","dweb:/ipfs/QmSbM8MgHbrJLYP7uzemfZeC4xctqdyKDbspwHUsgeeVJC"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd99e81434439567e123dbade39850ea3e439ed7a33fe9a609ca6f1e08214908d","urls":["bzz-raw://a00f6f27be952688d8db4ed77667d55219a56a04973db4d421a2776eb46da88b","dweb:/ipfs/QmRqDmtDwZ8pXCcJFzwP7JDtUk86LmhWDrZBKy6q9UK9rz"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0xadcb32bdc444a4420909b738d81fa662dc63739455fe93d5aa89c93a3ccfd2dd","urls":["bzz-raw://d303094c84ebfb0f9f114c54ff4dfc68bfa1e526d0ebe304be6fbeb7cb2f0d3f","dweb:/ipfs/QmYvUx1mNDhkxZFqxLeswW3w9HkvVqeoJiJKj1HN1SB7Gi"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x7488b4f48295e72946461b535263c01f38e2442c2d40eb61908ee355292b3e02","urls":["bzz-raw://01da8950f3cb5d62182c6f13467a3731c241640995e9c89dca2d87ad05bf69b3","dweb:/ipfs/QmPJK86FKgVfU17q14n8oV1EhYeSunpWyrCL1r3xc3gU5w"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x4f7eddc16b90adf81bd734c486d3fe4e5ccd530607a517ce4a4a6aceb75de517","urls":["bzz-raw://8fbe73b7b0f920ea227a0eabbcefab1a2b3ae3cc16769450187feeb42a8ed96b","dweb:/ipfs/Qmdq1Ae7ch1UWjStq35e1D13Lhth7iXLn1uTfrqFKsgzgx"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0x50ca52bdd89a9f27d6b03ad00ef45c8c5a6884ea9d75e18f8fa53524ac2feed9","urls":["bzz-raw://55febdece37b291527094fb654919d4c8fe0b231792996a14c5e5cc76512b19e","dweb:/ipfs/QmZHFbDDNmdFHWc1uTSvDgMUUgb8NgBPb1cDUJYajswbHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xaff9a22fac8a0f6eee5763b07a7ccb623c829d37922b85e42e914aad2ad417ee","urls":["bzz-raw://e598f0274d6d97c0a09806bf4fd1f0d054c310cf51b2123f5ce6380d6f3186ea","dweb:/ipfs/QmaaVvqm21YsCgxozDyShcM17jKUXJhf2y26bk2YzPYZoM"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xfae8c0039cbe627d30c1d3c96d5b5c979ea05ac744472a63c345e030be8773e3","urls":["bzz-raw://42e034310f09682a2b52de0083f40e0aca75746bc4d4a738a72043c49ed2f52a","dweb:/ipfs/QmTU2iSwXrJvLcLErmkBKxESxxpXhCAwUXxvG3AaHymJFy"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xe57042e82311847c56fa569377ed84459bf55afccdd3123312a5dff90c1d06f4","urls":["bzz-raw://baf3258c9118bf16ba68ebcfecdb5e5ffc85d5c0cdc2815ca298283dfcff2c83","dweb:/ipfs/QmcBVyUBR3PVejz7249VrEBMCMKHi72KoUXQ8DFmMmY48F"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0x6a4ef8460a4ba4acfa28f257578fef89bf0ad191d593b3499158e73138760bd9","urls":["bzz-raw://1512d379b35f90288a7834389a2913a78a42b86a7052346e2ad82c0adbd4f895","dweb:/ipfs/QmaUQjrXFQXR8F4LJqcBRgh5r3Q6KHmff3PrU2DVH8jEhv"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0x064f8e5de1d33dc43f8960c4511ab978f4f203db5be60b16455a33f81a44777b","urls":["bzz-raw://7ad396e3c7f780a924ab1e908f1713c7fbb3a734ecdd65f4cd82cd8414d3fa02","dweb:/ipfs/QmSRacmErXTjGpfdsS1AdjbAXjpxj1GgnXEsA1FFJuvx2q"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x3e0400cba77c74f53f16357b20449cda64468b519c9bac437564af127766d45a","urls":["bzz-raw://75387dc13d9d87e76bd3df827494c0288f48899c77dcfca0eaaac6cf45dd630b","dweb:/ipfs/QmVK2tDx8q6XxttCZheEdEcLpTdKkLxgw446vyv1ToN2p2"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol":{"keccak256":"0xe08d3af994098120b5507c71a1c3558763b8c1a88c6eae506aa438c2af78f800","urls":["bzz-raw://bb0c47b16ff524140388765fe9ef99211dd7d9b9374dae09144a9956138de00c","dweb:/ipfs/Qma8ibVu6WZs1hFW3hMnUykV3pPXGZhZ3xJwJXNj6Xu7aL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0x4feb9f14aee9c9f94fc6df55d34c0c0e3994a3e6432817c07712cef729dee867","urls":["bzz-raw://f2878a201cda27f77091becd4591bf0d868c3b7e7a80cae852778b85a374a3b8","dweb:/ipfs/QmcMoHjHjeKK5sqsa9ddJL63Dzy9ZLQ2gyNoyirKpsxkSh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x25248669a093cfdc9453491e5b5806f6aa092a805569799650c43c32f7b7877d","urls":["bzz-raw://2f294f597122450abd267760d91682facd0a1040383caeb44aaadeb74770904a","dweb:/ipfs/QmPXsoh8tUhpnhjdBYYTZCLc8MPHDZK6xUmN7F2DsMEXro"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x1ee313f4f1165034b92c5df1fe4cdd9be52b27780245388db3a0267c119fc926","urls":["bzz-raw://a3d58ca6a58e94bc30d5be0fc7a7d1325a92096c8b8b2b3a0531c2c5d0d60791","dweb:/ipfs/QmZSisbANqwnFzwMJnnYBjemLW4Cqn3oL7MkV4HiQR7GKv"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xe0b2ae91638eb7a609ce29428b3ab2a796f06558cf82cca9a258fd4ff06690dd","urls":["bzz-raw://522872daab151f15b83bb63a41dd54bc9142b8875fabd43f4bdae209f7532fd1","dweb:/ipfs/QmNRWboeoneiCkewk7BLp27yQCj7NE6DGNiaeWt6Z4jYtX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol":{"keccak256":"0x28ecea550f7cef98318f2db2e203e758475306a6454f776e6dbc5094811d577e","urls":["bzz-raw://01ae40d53747c2fec400c3bddec5789da6995a38e918bf3badad9c403e70d069","dweb:/ipfs/QmaQhjyGzXjTR16gJUnpaBhG5zJvPdaxJ6c9yJY9FD5kBb"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x50a1f277a00f01e3cb97a85f0fc624ae2192a726136720b6a900b465a7aecc05","urls":["bzz-raw://8f3cd87cc0b905d5b75d134d95176630404e76c0f0a343cbd17b8338e1492c0b","dweb:/ipfs/QmURFDNBdUWgh57apX9n7VF68rSQeQrpc5to4FFV6bbJgN"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x66193215d3c053675d67ba81d530ee2bb1c39250a15cf2d9a6fb166615af461d","urls":["bzz-raw://b783be83ef27281fb6ae2166f692d0ec912bdbe4f49312181b1ef561b5098729","dweb:/ipfs/Qmdtmq4mGtrqoFg4UWhxAevNfVXEUhp8fohRWycqKD2vCk"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0x3a53f395fc56398b4095c1e4016ad5f87d06236fc00f1fb85b9cfe138575b614","urls":["bzz-raw://9d91d30c8506a2d07bcafe0f8feff002bbc7764060d7e7bef7f15b9c4a97c597","dweb:/ipfs/QmVTAxSh1JSMpKD1jmJSTvXbDZQubdJW2DQDoePWecJskH"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xb857dd63073a6469f5bb8deb6c0617763cd42c484821e247572c6b53bb1da3cc","urls":["bzz-raw://07c710d67440b98b145c1991623b7c8cc7f0805b4e6fa37a7d54afcece31239e","dweb:/ipfs/Qmb368QqzbQGUttbDS7eVBGQ8KcXhiai2F9vy3Thyyk2vx"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0xc27730dae8302cb86f5d65ddc9ae0e92afba17842285a6d0cd146a1e21d73c0f","urls":["bzz-raw://4de5f820f1dfe36e53fe1fc77be6a52ac5fa72a7a5d5ec66e5d29ca6ce553674","dweb:/ipfs/QmP5JUMHDCBxZkZ2YnoYQLqQFHeyCpoUVp14hJBWpSdiqV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xcb1e9fd5cd02cbb7125f2a64c02f89272d4b0f2afc0b43f24b727f023ef06493","urls":["bzz-raw://f4a923e67dea1c1c0a978cbb89d4e27f6e0205f49efe0556ac90b358bd2062ab","dweb:/ipfs/QmZww8gDH9kyXsCaTYWzupNhL1QqR1emAbb5VifFWhDWYF"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x1706fe4b5441a4e3982a3d32f7de2148627b8dfbbe3e38391dd4dab06b86478c","urls":["bzz-raw://c0569fa73cd26c6476188646194ad58eb5cf78cb7c7dc7722748455c23c9d4d7","dweb:/ipfs/Qma1RuR12bTXSVJJ8Q8Gw23KkBw7pyV9u5Kr8TGutaxYdz"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0x3b8d434a81e5667242724089207f90001099d32095e05c4efd75931201d850b1","urls":["bzz-raw://73d47004e03e56b0d0e64ca9012219bc6ae01cef455d7e6ccab9f60dfc5e55b5","dweb:/ipfs/QmQUcGYNEVBRs1oj1HgJ92SPNuiDL3YVYbBymGy63yxqDc"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5","urls":["bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22","dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/InitModule.sol":{"keccak256":"0xa94f674bf15e20feff8e2e4a5819818a59ffd1026a6c436358f21124481249b3","urls":["bzz-raw://f30b50afbe39a6271ce4082d0d8a30a2d563eb52c89432f2de9d47e7ae4b0771","dweb:/ipfs/QmfEMVXKk8HvdiivYKPKsApRDar4G1bvjfwXvesRFZdVio"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol":{"keccak256":"0x1aa994d09220ac38bd4f47e2be9f54e4b1a46ffb14be40552ac64998059105fe","urls":["bzz-raw://88ba9f14551c18238056f6f5daf6166acc93c531f66cf32bbadb4142eca04a25","dweb:/ipfs/QmQfiy93ewydVkwLdbUSXHn5K29r1SJaiw51sgoFWJXsmu"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol":{"keccak256":"0x5aa1ad023ec7e30b102275af8f76e08d195e277fd89fb5fffd8436adf7dbc3f2","urls":["bzz-raw://5389a9204b6714c8494f169277ccfdcf43ab3d969cafddf8a5eb61d2a2b827a4","dweb:/ipfs/QmVvkj8hEcUQZTvHptDe7fEZHnH9bnut6f3jaLSquPgBCw"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/constants.sol":{"keccak256":"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9","urls":["bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752","dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/functionSignatures.sol":{"keccak256":"0x22a231d9b772d582fa7785218912e183404eab1e7c4ab8b4afe8fe123ebf6234","urls":["bzz-raw://969a745da85bd673861ab9faf3b702d4fbd16b575a6a76cbf5fe55c59efd6425","dweb:/ipfs/QmU6hBi69WMnxWyxjJnzJeiKqs1e8CKPP6rra9WZKs5VU8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol":{"keccak256":"0x7f8016dbd6ba13a93ef8fc2423bbaf5336e49f2cc8606df4e8312bb4353a49ad","urls":["bzz-raw://18d00c1f2c8d38eebbb16cd2cc2e5ed87be954a8ff602d25e04660c0b6214c33","dweb:/ipfs/QmRRhn2JvfmdpmruRcfvZUkU5bfwpbTLk6FDPHgPnuGQMe"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol":{"keccak256":"0xefdca5fdc8a03302d09f0ccbe6211ca5a41b3de573c1d8fa221ef16bc6e4c3e8","urls":["bzz-raw://2686adae48585133be67273703a6d594a26ca6d6a55f62d553abbc47149646b1","dweb:/ipfs/QmbW3mLPDK2WV3tEB8hwJEa47jYg4kstN6iJWHNaQeZxsp"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol":{"keccak256":"0x9d1498bdc2ef2ec0bf6d2beab2543ca826955d7e94a602351394b1a197efeeb5","urls":["bzz-raw://367299bcbe7df6683dc2a6d10838915ac0f7968739630e28900aa9c3e0833ea3","dweb:/ipfs/QmZAiRh4YWhLHxv92A7YRTRYNeVLNWAYjdWd9QWFrzzQsq"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol":{"keccak256":"0x1be1b12b2b2c7ff519cbe503ddda58cd308a8067e9ff7a168f3833031cf3f93d","urls":["bzz-raw://37cede506e9219fa7a1c518ece3fa6333ccad58b4b792629044288d2d9b9e8d1","dweb:/ipfs/QmcFo72Bv2t5GFQgM71NNB7xNLnQwG39oE9KTrdaNsv9ZV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xa176ed327805e7dfdd1b75c4c8f9fc203cb3f7c391f2547a08eab4b44059ad1a","urls":["bzz-raw://b017b00dac47516dbd1e5d3aeb97a41b6c39163d40b3a152d6f0e62e12493383","dweb:/ipfs/QmawZd1RUjd8xUh12SWA3q3tNWheemqqZmi61a6JZ761TG"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol":{"keccak256":"0x5e5182dc571b54c6ff9511290fde12e370f8f7169bb8e12a8674b3386f81aa8c","urls":["bzz-raw://88ce1cecb7dd333397ff5d9ed72876237c024f195886e056101f834fca058020","dweb:/ipfs/QmWkJAa6iWQzfaETJvFJAqGMmu4ZpwnNXPpfKSRy38WuUR"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/createDelegation.sol":{"keccak256":"0xcc77f108d653e54c3556047d69421c4864324aabbc4d29afc64c8ee20b1b622e","urls":["bzz-raw://974668744ac9b5d267952c52a60a6e2018067761a019af9cecfd2fbb3fa9a4aa","dweb:/ipfs/QmaiBpSkRwLRGgB6GjWL2dAYVe78yKtmBDpodBKpBrY2Fz"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/types.sol":{"keccak256":"0x81b75eb286ec515bde6cbb16c3d089054abb530b744865bbace68343d23177bc","urls":["bzz-raw://afc77bd51e24da666260bb48c44ff611869fb2e550921d732e5aac84a1f09525","dweb:/ipfs/QmeU5N4yeRh5nEA65pvGtQQJNv1GvEPy4PkhMVRYRMoMvh"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x5b94a21fd46abb4aac8f38809c0d6105f30792042c927f8a6a4f40cfe35c7ab8","urls":["bzz-raw://8bade9d52cf370f3b5435abb47a5338dca5498bee773e97518e7a080fa882940","dweb:/ipfs/QmTtaXUWwMQmHW8oKEoRZxagidZcCiN3oLQs7kN3nycrkW"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireNamespace.sol":{"keccak256":"0xda4a4a55bde8e55c28472d37009a194aa221ad11feb233d1c17a87b303977567","urls":["bzz-raw://ef691f35102f6ce85cc1cdaf3ec29b4ba632384a0358629dd642292c709f34e5","dweb:/ipfs/QmYuewEaRZ1UWxd231AK4SpjsiLrd7o4nyaPTeEzLCswcc"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireValidNamespace.sol":{"keccak256":"0x361f8259c4a5ba355b2aad118befe00f7fe5169be730d6c0ca11ab7a863bd6fd","urls":["bzz-raw://ccc850a1ea57e900d85e2c5fac02c36d55b42d2345b439ea7044ea42f5a49c01","dweb:/ipfs/QmVShgn2FgTTg9QGnL5Fzhovowmu1C7fABKLJTxbewZzEG"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0xa1147f218a0152b153d4e8bada0f606bfed40ac1f184fd16a941c2d0033c53f5","urls":["bzz-raw://3f5e0f6d1b51a3a04d4bd84537b2ced373b32824898cf6fbfd13ae1cbdf06359","dweb:/ipfs/QmayYRmBZRUV9m4UnFxuC62VvHriXhkYXeH3HibZ3Gmxxf"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0x15c25ae4b21e091209970e45a198cb51f31eeae482828862641099c1a9b2448a","urls":["bzz-raw://0ce3c3eb58dc5c262d36babf372ad028d2846beea73a59d6e70f0eb8c90ee00d","dweb:/ipfs/QmWUkgegTRtSJM3awvjg4J7DWZ2ME7Pnxp1dP2TWWzLNoo"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x9c222a00d7aef686e6f6319d544959ee8a7010c7c0692738f7fe9d19694b0715","urls":["bzz-raw://0296e6e111eeb4f6249fea39ee3b024a02f46eb692925d9b41e3b39fa15a940b","dweb:/ipfs/QmbSYepReq4NepkvLEkeTtGXRwFpQRUfyENnjkd4kaM4BU"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xeb042e7d3638430f6fd394107f3237cf14e4325154f0098624e8a7826584d465","urls":["bzz-raw://39e0b8eb87616b661f5a4f2fd7e1a727bd19b7fd8d40ad3d93fda26822f433ea","dweb:/ipfs/QmacYMatKV9pwEwirVRY9a6r89RoNs5yk99ic37ieWA8Dk"],"license":"MIT"},"node_modules/@latticexyz/world/test/createInitModule.sol":{"keccak256":"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383","urls":["bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc","dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa"],"license":"MIT"},"node_modules/@latticexyz/world/test/createWorld.sol":{"keccak256":"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196","urls":["bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4","dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/Constants.sol":{"keccak256":"0x4d66474d3c0d5bf9b34b539a9382627c405b1e0f620914d66e83c1f2589f670c","urls":["bzz-raw://7a1a01fb1d0b6889828d36f830466103bb6da29eafd46ac6eb6d0650a05c2857","dweb:/ipfs/QmakjCNnnkhMLYjfwgoTdfZwzuMtJVNGcbyzxGYypcQ91Y"],"license":"MIT"},"src/Context.sol":{"keccak256":"0xb0760347c3793f7b8597ed2b6bfa0533f3dae95a07675bf6518be3e42844fe68","urls":["bzz-raw://52b6603e17f042c7cc0911d1003a86e7e48a20398426baec01f8c4b1d4c35e28","dweb:/ipfs/QmUAUBgpMwWLiWeNrrmuWC4DtocgY8DA3JXQfQZQ2tBvSK"],"license":"MIT"},"src/MUDERC20.sol":{"keccak256":"0x949868bbeda93225b2b116705196697cf4ff963c42f42456d0151c3f032539fd","urls":["bzz-raw://3d2dd34c096ed994dbc9edda5e6eb43e7cf9f8f3792f95662cbbd42084eedd56","dweb:/ipfs/QmeNAxxhRiBWmRwQ1eBuyR4pNhA5asg2gEYULbrzsuGt2A"],"license":"MIT"},"src/StoreConsumer.sol":{"keccak256":"0xc143e0167b1192b9b12ed71a0398cca24ef23154a3fad145bc3cb7ed2def6855","urls":["bzz-raw://4546ea4a5154c7643789d431813fba68071f80bb26b35d4b57b4f0c6e8b0aa36","dweb:/ipfs/QmVWNWpuwDJYToHs4woPdZsZ66HwVaCUsZmKsJ3cW3cd9s"],"license":"MIT"},"src/WithStore.sol":{"keccak256":"0xb3e56f54027a41cd43d18118764704dc070ebc3cf289dc1ff9f986a2b1767c98","urls":["bzz-raw://4adde5e6d73ea36a564eb7a22adf900205023ec154573209bbec3333fbfb6044","dweb:/ipfs/QmSc6rGweukMeKRwxtb8678N8wgQmNYVwRTU1TSd8Bo5v6"],"license":"MIT"},"src/WithWorld.sol":{"keccak256":"0x3f34b0928247bedde1e7eb2e842bb13713f0e428d18a72f6a3156cd891ddb714","urls":["bzz-raw://d6d95605baf0b91648795d04103f2601087e4f64075a22cb19a0880c0ab86638","dweb:/ipfs/QmTS2Vhnx8BJUzoUNLKDVLtNZnw6ZYTxnHwFfyavmnqpvp"],"license":"MIT"},"src/codegen/tables/Allowances.sol":{"keccak256":"0x51bdf129e0b116fd8ec04c2a292ce00a3211b5ddd0fe1313ff252be0f6c915d0","urls":["bzz-raw://5b8e2f4cc58db358e38b386d21b2c575fa4ae573e12487cbe56f7bec753f43a2","dweb:/ipfs/QmQUEomWFs9kHM1BiBkDMnu8pFxdn7XEUaidxW5bWwDeqt"],"license":"MIT"},"src/codegen/tables/Balances.sol":{"keccak256":"0x6397f165aed38d2e921a0ae4f280f8079e0241d24bce2915c99ce69ea036b0cc","urls":["bzz-raw://8b9ecc3fe44da5dc9c2532d85b288f6d9dfc28ea5a0899fe32faa1d7d78bd047","dweb:/ipfs/QmayMhjNZJNRKjyxC7AEXkx87ePDu4rNVqZ7eDRTzk8Jrc"],"license":"MIT"},"src/codegen/tables/ERC20Metadata.sol":{"keccak256":"0xb90f1f9f228a91b4e558d5d40bfbdb7c0970f3d57b5afe9f77fd20fab8969b94","urls":["bzz-raw://56090ae6307d15fc2d86ef240dc5e0b3d338de1d5873faf0d2894d2018ca4a03","dweb:/ipfs/QmWWbqFBZtVQffPtmNv8b9B7dRDtNYY5HvUbdYyBr6YxXS"],"license":"MIT"},"src/codegen/tables/TotalSupply.sol":{"keccak256":"0x7021c83769d9c4e3d4026101d625c6c42cd972ff1c77ec121780ef42c161d933","urls":["bzz-raw://eae00cc4fda10f7cb5ea3007a00158227501f4c0a3236ec9c69c3d005704502a","dweb:/ipfs/QmTfbddu92e2a6TnXZyVpk9zKTaHcyqGnaWtdh1jwm3DVB"],"license":"MIT"},"src/interfaces/IERC20.sol":{"keccak256":"0x9801fd978d8e6975ee67acb04fdee0aa5c18bf47d87ca2793f333a17a6b73607","urls":["bzz-raw://fe4f5fb71afd859c3d0e88a8c0619ca52f5c20c2d37cb8a1bcc71576e6ce08db","dweb:/ipfs/QmQNvL3G6JX71y9f7wt94Pc2RqJCEAcv54yYDJ8hi9oxs1"],"license":"MIT"},"src/interfaces/IERC20Errors.sol":{"keccak256":"0x704a9e25590a92a80d153552fbe79a83fe0a80a8f6eaa8d2ccaca70649e40fce","urls":["bzz-raw://0e6ae9510a9c5023299a1064c945b652336a31f5cd225bbe9a72f9e2fd81ada2","dweb:/ipfs/QmdvTCUs3ZiP5unHGdwJz3MxAR5b7K7bYVTZjBT8xadBVR"],"license":"MIT"},"src/interfaces/IERC20Events.sol":{"keccak256":"0xee632339ff14c1e5e6994ce3c605799761f24f40093cabf3b091f6dcbd9ef8ff","urls":["bzz-raw://a0c7a33110c14cfc32011bda15c4330d8f193d133c1f34448f1566f44a0663bd","dweb:/ipfs/QmadwRXGu4H2H3WxgEchXTyLx5PKSLZd7VHvRPEZ5zAgaZ"],"license":"MIT"},"src/interfaces/IERC20Metadata.sol":{"keccak256":"0xc26cdadf0232c5b579132de5dce1909c59e93c82b4a8f13802d1aa295b96d5f6","urls":["bzz-raw://0ffc3d4d1328d66c454ddf2530894ad572fc69d220a3da0d0d4f3e1b7c8b1938","dweb:/ipfs/QmapyHXE8KWktGksfNsQxUbhoCjobGTGEzmjY2yBAXvbzD"],"license":"MIT"},"test/ERC20BaseTest.sol":{"keccak256":"0x72ba1233b66c5cc710499933ac3444fb672030c9f7afb953e2c3d7bfc4a9597c","urls":["bzz-raw://751cc93c15b30b741aaaa4e02690abe3a3d7f6320f1cd781ba0084a6760cf2be","dweb:/ipfs/QmRs63YpoaggRKjSFqspSG93cuP4cEGfDsoyQXnmHpSsdK"],"license":"MIT"}},"version":1},"id":145}
|